Passer au contenu principal

API publique de Casdoor

L'interface utilisateur web frontend de Casdoor est une SPA (Single-Page Application) développée en React. Le frontend React consomme l'API RESTful de Casdoor exposée par le code backend en Go. Cette API RESTful est appelée Casdoor Public API. En d'autres termes, avec des appels HTTP, vous pouvez tout faire comme le fait l'interface utilisateur web de Casdoor elle-même. Il n'y a pas d'autres limitations. L'API peut être utilisée par les suivants :

  • Frontend de Casdoor
  • SDKs clients de Casdoor (par exemple, casdoor-go-sdk)
  • Tout autre code personnalisé du côté de l'application

La référence complète pour l'Casdoor Public API peut être trouvée sur Swagger : https://door.casdoor.com/swagger. Ces documents Swagger sont générés automatiquement en utilisant l'outil Bee de Beego. Si vous souhaitez générer les documents Swagger par vous-même, voir : Comment générer le fichier swagger

Comment s'authentifier avec l'Casdoor Public API

1. Par Access token

Nous pouvons utiliser le token d'accès accordé à un utilisateur authentifié pour appeler l'Casdoor Public API comme l'utilisateur lui-même.

Comment obtenir le token d'accès ?

L'application peut obtenir le token d'accès pour l'utilisateur de Casdoor à la fin du processus de connexion OAuth (alias obtenir le token par code et état). Les permissions pour les appels API seront les mêmes que celles de l'utilisateur.

L'exemple ci-dessous montre comment appeler la fonction GetOAuthToken() en Go via casdoor-go-sdk.

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)
}

Tous les tokens d'accès accordés peuvent également être consultés via l'interface utilisateur web par un utilisateur administrateur dans la page Tokens. Par exemple, visitez : https://door.casdoor.com/tokens pour le site de démonstration.

Comment s'authentifier ?

  1. Paramètre GET HTTP, le format de l'URL est :

    /page?access_token=<The access token>

    Exemple de site de démonstration : https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIs

  2. Token porteur HTTP, le format de l'en-tête HTTP est :

    Authorization: Bearer <The access token>

2. Par Client ID et Client secret

Comment obtenir l'ID client et le secret ?

La page d'édition de l'application (par exemple, https://door.casdoor.com/applications/casbin/app-vue-python-example) affichera l'ID client et le secret pour une application. Cette authentification est utile lorsque vous souhaitez appeler l'API en tant que "machine", "application" ou "service" au lieu d'un utilisateur. Les permissions pour les appels API seront les mêmes que celles de l'application (alias l'administrateur de l'organisation).

L'exemple ci-dessous montre comment appeler la fonction GetOAuthToken() en Go via casdoor-go-sdk.

Comment s'authentifier ?

  1. Paramètre GET HTTP, le format de l'URL est :

    /page?clientId=<The client ID>&clientSecret=<the client secret>

    Exemple de site de démonstration : https://door.casdoor.com/api/get-global-providers?clientId=294b09fbc17f95daf2fe&clientSecret=dd8982f7046ccba1bbd7851d5c1ece4e52bf039d

  2. Authentification de base HTTP, le format de l'en-tête HTTP est :

    Authorization: Basic <The Base64 encoding of client ID and client secret joined by a single colon ":">

Si vous n'êtes pas familier avec l'encodage Base64, vous pouvez utiliser une bibliothèque pour le faire car l'Authentification de base HTTP est une norme populaire prise en charge par de nombreux endroits.

3. Par Access key et Access secret

Nous pouvons utiliser la clé d'accès et le secret d'accès pour un utilisateur Casdoor pour appeler l'Casdoor Public API comme l'utilisateur lui-même. La clé d'accès et le secret d'accès peuvent être configurés dans la page des paramètres de l'utilisateur par un administrateur ou l'utilisateur lui-même. L'API update-user peut également être appelée pour mettre à jour ces champs. Les permissions pour les appels API seront les mêmes que celles de l'utilisateur.

Comment s'authentifier ?

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

  2. Paramètre GET HTTP, le format de l'URL est :

    /page?accessKey=<The user's access key>&accessSecret=<the user's access secret>"

Exemple de site de démonstration : 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. Par username et password

prudence

Cette méthode d'authentification n'est pas sûre et est conservée ici uniquement à des fins de compatibilité ou de démonstration. Nous recommandons d'utiliser les trois méthodes d'authentification précédentes à la place.

Que se passera-t-il ?

Les informations d'identification de l'utilisateur seront exposées en tant que paramètres GET dans l'URL de la requête. De plus, les informations d'identification de l'utilisateur pourront être interceptées en texte clair par le réseau si vous utilisez HTTP au lieu de HTTPS.

Nous pouvons utiliser le nom d'utilisateur et le mot de passe d'un utilisateur Casdoor pour appeler l'Casdoor Public API comme l'utilisateur lui-même. Le nom d'utilisateur prend le format de <Le nom de l'organisation de l'utilisateur>/<Le nom de l'utilisateur>. Les permissions pour les appels API seront les mêmes que celles de l'utilisateur.

Comment s'authentifier ?

  1. Paramètre GET HTTP, le format de l'URL est :

    /page?username=<The user's organization name>/<The user name>&password=<the user's password>"

Exemple de site de démonstration : https://door.casdoor.com/api/get-global-providers?username=built-in/admin&password=123