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

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

Machine-to-Machine (M2M) Authentication

Machine-to-machine (M2M) authentication is designed for scenarios where services, applications, or backend systems need to authenticate and communicate with APIs without user interaction. This is particularly useful for:

  • Backend services calling Casdoor APIs programmatically
  • CLI tools that need to interact with your APIs using access tokens
  • B2B enterprise scenarios where organizations need to generate tokens for API access (e.g., admin tokens for management operations, read tokens for data access)
  • Automated processes such as scheduled jobs, data synchronization, or system integrations
  • Microservices that need to authenticate with each other

Casdoor supports M2M authentication through the following methods:

  1. Client Credentials Grant (OAuth 2.0): The recommended approach for M2M scenarios. This uses the Client Credentials Grant flow where applications authenticate using their Client ID and Client Secret to obtain access tokens. See the OAuth Client Credentials Grant documentation for details on obtaining tokens via this flow.

  2. Direct API Authentication with Client ID and Secret: Use the application's credentials directly in API calls (see method #2 below).

Use Cases for M2M Authentication

  • Organization-level API access: In B2B scenarios, you can create a Casdoor application for each organization. The application's client credentials provide admin-level permissions for that organization, enabling them to manage their users, generate tokens, and access organizational resources independently.

  • Token generation for downstream services: Generate access tokens programmatically (using Client Credentials Grant) that can be distributed to CLI tools, read-only services, or other applications that need scoped access to your APIs.

  • Service-to-service authentication: Backend services can authenticate as an "application" rather than as a user, with permissions equivalent to the organization admin.

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. By Client ID and Client secret (Machine-to-Machine)

This method is the primary approach for machine-to-machine (M2M) authentication. It allows applications, services, or backend systems to authenticate with Casdoor APIs without any user interaction.

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

アプリケーション編集ページ(例:https://door.casdoor.com/applications/casbin/app-vue-python-example)はアプリケーションのクライアントIDとシークレットを表示します。 This authentication method is useful when you want to call the API as a "machine", "application", or a "service" instead of a user. The permissions for the API calls will be the same as the application (equivalent to the admin of the organization).

Use cases

  • Service authentication: Backend services calling Casdoor APIs programmatically
  • Organization management: In B2B scenarios, create an application per organization to enable them to manage users and generate tokens independently
  • Token generation: Obtain access tokens via the OAuth Client Credentials Grant flow for distribution to CLI tools or other services

認証方法は?

  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ベーシック認証は多くの場所でサポートされている一般的な標準なので、ライブラリを使用して行うことができます。

Obtaining access tokens with Client Credentials

For machine-to-machine scenarios where you need to obtain an access token (rather than using client credentials directly), use the OAuth 2.0 Client Credentials Grant flow:

  1. Make a POST request to https://<CASDOOR_HOST>/api/login/oauth/access_token with:

    {
    "grant_type": "client_credentials",
    "client_id": "YOUR_CLIENT_ID",
    "client_secret": "YOUR_CLIENT_SECRET"
    }
  2. You will receive an access token response:

    {
    "access_token": "eyJhb...",
    "token_type": "Bearer",
    "expires_in": 10080,
    "scope": "openid"
    }
  3. Use the access_token to call Casdoor APIs (see method #1 above).

For more details, see the Client Credentials Grant documentation.

情報

For B2B Enterprises: You can create separate Casdoor applications for each of your customer organizations. Each application has its own client_id and client_secret, which your customers can use to:

  • Authenticate as their organization (with admin privileges)
  • Generate access tokens for their users or services
  • Manage their organization's users and permissions independently
  • Integrate your APIs into their systems without UI-based login flows

This approach allows you to delegate organization management to your customers while maintaining security and isolation between different organizations.

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