Ö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
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=eyJhbGciOiJSUzI1NiIs
HTTP Bearer-Token, das HTTP-Header-Format lautet:
Authorization: Bearer <The access token>
2. Mit Client ID
und Client secret
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. Diese Authentifizierung ist nützlich, wenn Sie die API als "Maschine", "Anwendung" oder "Dienst" anstelle eines Benutzers aufrufen möchten. Die Berechtigungen für die API-Aufrufe werden dieselben sein wie für die Anwendung (also der Admin der Organisation).
Die folgenden Beispiele zeigen, wie man die Funktion GetOAuthToken()
in Go über casdoor-go-sdk aufruft.
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=dd8982f7046ccba1bbd7851d5c1ece4e52bf039d
HTTP-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.
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