Passer au contenu principal

APIs Casbin exposées

Introduction

Supposons que le front-end de votre application a obtenu le access_token de l'utilisateur connecté et souhaite maintenant authentifier l'utilisateur pour certains accès. Vous ne pouvez pas simplement placer le access_token dans l'en-tête de la requête HTTP pour utiliser ces APIs car Casdoor utilise le champ Authorization pour vérifier la permission d'accès. Comme toutes les autres APIs fournies par Casdoor, le champ Authorization se compose de l'identifiant client de l'application et du secret, en utilisant le schéma d'authentification HTTP de base. Ça ressemble à Authorization: Basic <Votre_Application_ClientId> <Votre_Application_ClientSecret>. Pour cette raison, les APIs Casbin doivent être appelées par le serveur backend de l'application. Voici les étapes à suivre.

Prenez l'application app-vue-python-example sur le site de démonstration par exemple, l'en-tête d'autorisation devrait être : Authorization: Basic 294b09fbc17f95daf2fe dd8982f7046ccba1bbd7851d5c1ece4e52bf039d.

  1. Le front-end transmet le access_token au serveur backend via l'en-tête de la requête HTTP.
  2. Le serveur backend récupère l'identifiant de l'utilisateur à partir du access_token.

Comme note préalable, ces interfaces sont également conçues (pour l'instant) pour le modèle (sub, obj, act). Le permissionId dans les paramètres de l'URL est l'identité de la politique de permission appliquée, qui se compose du nom de l'organisation et du nom de la politique de permission (c'est-à-dire, nom de l'organisation/nom de la permission). Le corps est le format de requête défini par le modèle Casbin de la permission, représentant généralement sub, obj et act respectivement.

En plus de l'interface API pour demander l'application du contrôle des permissions, Casdoor fournit également d'autres interfaces qui aident les applications externes à obtenir des informations sur la politique de permission, qui sont également listées ici.

Enforcer

Requête :

curl --location --request POST 'http://localhost:8000/api/enforce?permissionId=example-org/example-permission' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <Your_Application_ClientId> <Your_Application_ClientSecret>' \
--data-raw '["example-org/example-user", "example-resource", "example-action"]'

Réponse :

{
"status": "ok",
"msg": "",
"sub": "",
"name": "",
"data": [
true
],
"data2": null
}

BatchEnforce

Requête :

curl --location --request POST 'http://localhost:8000/api/batch-enforce?permissionId=example-org/example-permission' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic <Your_Application_ClientId> <Your_Application_ClientSecret>' \
--data-raw '[["example-org/example-user", "example-resource", "example-action"], ["example-org/example-user2", "example-resource", "example-action"], ["example-org/example-user3", "example-resource", "example-action"]]'

Réponse :

{
"status": "ok",
"msg": "",
"sub": "",
"name": "",
"data": [
[
true,
true,
false
]
],
"data2": null
}

GetAllObjects

Requête :

curl --location --request GET 'http://localhost:8000/api/get-all-objects' \
--header 'Authorization: Basic <Your_Application_ClientId> <Your_Application_ClientSecret>'

Réponse :

[
"app-built-in"
]

GetAllActions

Requête :

curl --location --request GET 'http://localhost:8000/api/get-all-actions' \
--header 'Authorization: Basic <Your_Application_ClientId> <Your_Application_ClientSecret>'

Réponse :

[
"read",
"write",
"admin"
]

GetAllRoles

Requête :

curl --location --request GET 'http://localhost:8000/api/get-all-roles' \
--header 'Authorization: Basic <Your_Application_ClientId> <Your_Application_ClientSecret>'

Réponse :

[
"role_kcx66l"
]