メインコンテンツにスキップ

Casdoor Public API

CasdoorフロントエンドWeb UIはReactで開発されたSPA(シングルページアプリケーション)です。 ReactフロントエンドはGoバックエンドコードによって公開されたCasdoor RESTful APIを利用します。 このRESTful APIはCasdoor Public APIとして参照されます。 言い換えれば、HTTPコールを使って、Casdoor Web UI自体が行うのと同じことができます。 他に制限はありません。 以下のユーザーがAPIを利用できます:

  • Casdoorのフロントエンド
  • CasdoorクライアントSDK(例:casdoor-go-sdk)
  • アプリケーション側からのカスタマイズされたコード

Casdoor Public APIの完全なリファレンスはSwaggerにあります:https://door.casdoor.com/swagger。 これらのSwaggerドキュメントはBeegoのBeeツールを使用して自動生成されます。 Swaggerドキュメントを自分で生成したい場合は、こちらを参照してください:How to generate the swagger file

Casdoor Public APIでの認証方法

1. アクセストークンによる

認証されたユーザーに付与されたアクセストークンを使用して、そのユーザー自身としてCasdoor Public APIを呼び出すことができます。

アクセストークンを取得する方法は?

アプリケーションはOAuthログインプロセスの最後にCasdoorユーザーのアクセストークンを取得できます(コードとステートによってトークンを取得します)。 APIコールの権限はユーザーと同じになります。

以下の例は、casdoor-go-sdkを介してGoでGetOAuthToken()関数を呼び出す方法を示しています。

func (c *ApiController) Signin() {
code := c.Input().Get("code")
state := c.Input().Get("state")

token, err := casdoorsdk.GetOAuthToken(code, state)
if err != nil {
c.ResponseError(err.Error())
return
}

claims, err := casdoorsdk.ParseJwtToken(token.AccessToken)
if err != nil {
c.ResponseError(err.Error())
return
}

if !claims.IsAdmin {
claims.Type = "chat-user"
}

err = c.addInitialChat(&claims.User)
if err != nil {
c.ResponseError(err.Error())
return
}

claims.AccessToken = token.AccessToken
c.SetSessionClaims(claims)

c.ResponseOk(claims)
}

付与されたすべてのアクセストークンは、Tokensページで管理ユーザーによってWeb UI経由でもアクセスできます。 例えば、デモサイトの場合は:https://door.casdoor.com/tokensを訪問してください。

認証方法は?

  1. HTTP GETパラメータ、URLの形式は:

    /page?access_token=<The access token>

    デモサイトの例:https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIs

  2. HTTPベアラートークン、HTTPヘッダーの形式は:

    Authorization: Bearer <The access token>

2. クライアントIDクライアントシークレットによる

クライアントIDとシークレットを取得する方法は?

アプリケーション編集ページ(例:https://door.casdoor.com/applications/casbin/app-vue-python-example)はアプリケーションのクライアントIDとシークレットを表示します。 この認証は、ユーザーではなく「マシン」、「アプリケーション」、または「サービス」としてAPIを呼び出したい場合に便利です。 APIコールの権限はアプリケーション(つまり組織の管理者)と同じになります。

以下の例は、casdoor-go-sdkを介してGoでGetOAuthToken()関数を呼び出す方法を示しています。

認証方法は?

  1. HTTP GETパラメータ、URLの形式は:

    /page?clientId=<The client ID>&clientSecret=<the client secret>

    デモサイトの例:https://door.casdoor.com/api/get-global-providers?clientId=294b09fbc17f95daf2fe&clientSecret=dd8982f7046ccba1bbd7851d5c1ece4e52bf039d

  2. HTTPベーシック認証、HTTPヘッダーの形式は:

    Authorization: Basic <The Base64 encoding of client ID and client secret joined by a single colon ":">

Base64エンコーディングに慣れていない場合は、HTTPベーシック認証は多くの場所でサポートされている一般的な標準なので、ライブラリを使用して行うことができます。

3. アクセスキーアクセスシークレットによる

Casdoorユーザーのアクセスキーとアクセスシークレットを使用して、そのユーザー自身としてCasdoor Public APIを呼び出すことができます。 アクセスキーとアクセスシークレットは、管理者またはユーザー自身によってユーザー設定ページで設定できます。 update-user APIもこれらのフィールドを更新するために呼び出すことができます。 APIコールの権限はユーザーと同じになります。

認証方法は?

  1. Create a pair of accessKey and accessSecret in account setting page.

  2. HTTP GETパラメータ、URLの形式は:

    /page?accessKey=<The user's access key>&accessSecret=<the user's access secret>"

デモサイトの例:https://door.casdoor.com/api/get-global-providers?accessKey=b86db9dc-6bd7-4997-935c-af480dd2c796/admin&accessSecret=79911517-fc36-4093-b115-65a9741f6b14

User Api Key

curl --location 'http://door.casdoor.com/api/user?accessKey=b86db9dc-6bd7-4997-935c-af480dd2c796&accessSecret=79911517-fc36-4093-b115-65a9741f6b14'

4. ユーザー名パスワードによる

注意

この認証方法は安全ではなく、互換性またはデモ目的のためにここに残されています。 前述の3つの認証方法を使用することをお勧めします。

何が起こるか?

ユーザーの資格情報はリクエストURLのGETパラメータとして露出します。 さらに、HTTPSではなくHTTPを使用している場合、ユーザーの資格情報はネットワークによってプレーンテキストで嗅ぎ取られます。

Casdoorユーザーのユーザー名とパスワードを使用して、そのユーザー自身としてCasdoor Public APIを呼び出すことができます。 ユーザー名は<ユーザーの組織名>/<ユーザー名>の形式を取ります。 APIコールの権限はユーザーと同じになります。

認証方法は?

  1. HTTP GETパラメータ、URLの形式は:

    /page?username=<The user's organization name>/<The user name>&password=<the user's password>"

デモサイトの例:https://door.casdoor.com/api/get-global-providers?username=built-in/admin&password=123