Öffentliche Casdoor API
Die Casdoor Frontend-Web-UI ist eine SPA (Single-Page Application), die in React entwickelt wurde. Das React-Frontend nutzt die von dem Go-Backend-Code bereitgestellte Casdoor RESTful API. Diese RESTful API wird als Casdoor Public API bezeichnet. In anderen Worten, mit HTTP-Anfragen können Sie alles tun, genau wie es die Casdoor-Web-UI selbst macht. Es gibt keine weiteren Einschränkungen. Die API kann von den folgenden genutzt werden:
- Frontend von Casdoor
- Casdoor-Client-SDKs (z.B. casdoor-go-sdk)
- Jeglicher anderer angepasster Code von der Anwendungsseite
Die vollständige Referenz für die Casdoor Public API finden Sie auf Swagger: https://door.casdoor.com/swagger. Diese Swagger-Dokumente werden automatisch mit Beegos Bee-Tool generiert. Wenn Sie die Swagger-Dokumente selbst generieren möchten, siehe: Wie man die Swagger-Datei generiert
API Response Language
Casdoor APIs support internationalized responses. The default response language is English. To receive error messages and other text content in your preferred language, include the Accept-Language header in your API requests:
# Example: Get error messages in French
curl -X GET https://door.casdoor.com/api/get-account \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept-Language: fr"
Supported language codes include en, zh, es, fr, de, ja, ko, and more. For a complete list and more details, see the Internationalization documentation.
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:
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 IDandClient Secretto obtain access tokens. See the OAuth Client Credentials Grant documentation for details on obtaining tokens via this flow.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.
Wie man sich mit der Casdoor Public API authentifiziert
1. Mit Access token
Wir können das für einen authentifizierten Benutzer erteilte Zugriffstoken verwenden, um die Casdoor Public API als der Benutzer selbst aufzurufen.
Wie bekommt man das Zugriffstoken?
Die Anwendung kann das Zugriffstoken für den Casdoor-Benutzer am Ende des OAuth-Anmeldeprozesses erhalten (auch bekannt als das Token per Code und Zustand erhalten). Die Berechtigungen für die API-Aufrufe werden dieselben sein wie für den Benutzer.
Die folgenden Beispiele zeigen, wie man die Funktion GetOAuthToken() in Go über casdoor-go-sdk aufruft.
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)
}
Alle erteilten Zugriffstoken können auch über die Web-UI von einem Admin-Benutzer auf der Token-Seite eingesehen werden. Zum Beispiel besuchen Sie: https://door.casdoor.com/tokens für die Demo-Seite.
Wie authentifiziert man sich?
HTTP
GET-Parameter, das URL-Format lautet:/page?access_token=<The access token>Demo-Seiten-Beispiel:
https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIsHTTP Bearer-Token, das HTTP-Header-Format lautet:
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.
Wie bekommt man die Client-ID und das Geheimnis?
Die Anwendungs-Bearbeitungsseite (z.B. https://door.casdoor.com/applications/casbin/app-vue-python-example) zeigt die Client-ID und das Geheimnis für eine Anwendung an. 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
Wie authentifiziert man sich?
HTTP
GET-Parameter, das URL-Format lautet:/page?clientId=<The client ID>&clientSecret=<the client secret>Demo-Seiten-Beispiel:
https://door.casdoor.com/api/get-global-providers?clientId=294b09fbc17f95daf2fe&clientSecret=dd8982f7046ccba1bbd7851d5c1ece4e52bf039dHTTP-Basisauthentifizierung, das HTTP-Header-Format lautet:
Authorization: Basic <The Base64 encoding of client ID and client secret joined by a single colon ":">
Wenn Sie nicht mit der Base64-Kodierung vertraut sind, können Sie eine Bibliothek dafür verwenden, da HTTP Basic Authentication ein beliebter Standard ist, der an vielen Stellen unterstützt wird.
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:
Make a POST request to
https://<CASDOOR_HOST>/api/login/oauth/access_tokenwith:{
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}You will receive an access token response:
{
"access_token": "eyJhb...",
"token_type": "Bearer",
"expires_in": 10080,
"scope": "openid"
}Use the
access_tokento 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. Mit Access key und Access secret
Wir können den Zugangsschlüssel und das Zugangsgeheimnis für einen Casdoor-Benutzer verwenden, um die Casdoor Public API als der Benutzer selbst aufzurufen. Der Zugangsschlüssel und das Zugangsgeheimnis können in der Benutzereinstellungsseite von einem Admin oder dem Benutzer selbst konfiguriert werden. Die update-user-API kann auch aufgerufen werden, um diese Felder zu aktualisieren. Die Berechtigungen für die API-Aufrufe werden dieselben sein wie für den Benutzer.
Wie authentifiziert man sich?
Create a pair of accessKey and accessSecret in account setting page.
HTTP
GET-Parameter, das URL-Format lautet:/page?accessKey=<The user's access key>&accessSecret=<the user's access secret>"
Demo-Seiten-Beispiel: 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. Mit Benutzername und Passwort
Diese Authentifizierungsmethode ist nicht sicher und wird hier nur aus Kompatibilitätsgründen oder zu Demonstrationszwecken aufbewahrt. Wir empfehlen die Verwendung der vorherigen drei Authentifizierungsmethoden.
Was wird passieren?
Die Benutzeranmeldeinformationen werden als GET-Parameter in der Anfrage-URL offengelegt. Außerdem werden die Benutzeranmeldeinformationen im Klartext vom Netzwerk abgehört, wenn Sie HTTP anstelle von HTTPS verwenden.
Wir können den Benutzernamen und das Passwort für einen Casdoor-Benutzer verwenden, um die Casdoor Public API als der Benutzer selbst aufzurufen. Der Benutzername hat das Format <Der Organisationsname des Benutzers>/<Der Benutzername>. Die Berechtigungen für die API-Aufrufe werden dieselben sein wie für den Benutzer.
Wie authentifiziert man sich?
HTTP
GET-Parameter, das URL-Format lautet:/page?username=<The user's organization name>/<The user name>&password=<the user's password>"
Demo-Seiten-Beispiel: https://door.casdoor.com/api/get-global-providers?username=built-in/admin&password=123
CORS (Cross-Origin Resource Sharing)
Casdoor implements flexible CORS handling to allow secure cross-origin API requests. The server validates the Origin header and returns appropriate Access-Control-Allow-Origin headers based on the following rules:
Allowed origins:
- Origins matching your application's redirect URIs (configured in the application settings)
- Origins matching the Casdoor server's own hostname
- The configured origin in Casdoor's settings
- Special endpoint exceptions: requests to
/api/login/oauth/access_tokenand/api/userinfoendpoints, and requests with originappleid.apple.com
How it works:
When you make a cross-origin API request, Casdoor validates the origin through multiple checks: localhost/intranet addresses, matching redirect URIs in any application, matching the server's hostname, or configured origins. If any validation passes, the server includes CORS headers in the response allowing the request. For preflight OPTIONS requests, Casdoor returns appropriate headers including allowed methods (POST, GET, OPTIONS, DELETE) and credentials support.
Configuration:
To enable CORS for your application, add your frontend's origin to the application's Redirect URIs in the Casdoor admin panel. This allows your application to make authenticated API calls from the browser.