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 ?
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
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 ?
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
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 ?
Create a pair of accessKey and accessSecret in account setting page.
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
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
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 ?
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