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を訪問してください。
認証方法は?
HTTP
GET
パラメータ、URLの形式は:/page?access_token=<The access token>
デモサイトの例:
https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIs
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()
関数を呼び出す方法を示しています。
認証方法は?
HTTP
GET
パラメータ、URLの形式は:/page?clientId=<The client ID>&clientSecret=<the client secret>
デモサイトの例:
https://door.casdoor.com/api/get-global-providers?clientId=294b09fbc17f95daf2fe&clientSecret=dd8982f7046ccba1bbd7851d5c1ece4e52bf039d
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コールの権限はユーザーと同じになります。
認証方法は?
Create a pair of accessKey and accessSecret in account setting page.
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
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コールの権限はユーザーと同じになります。
認証方法は?
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