Zum Hauptinhalt springen

Ö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?

  1. 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

  2. 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?

  1. 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

  2. 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?

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

  2. 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

User Api Key

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

Vorsicht

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?

  1. 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