Saltar al contenido principal

API Pública de Casdoor

La interfaz de usuario web del frontend de Casdoor es una SPA (Aplicación de Una Sola Página) desarrollada en React. El frontend de React consume la API RESTful de Casdoor expuesta por el código del backend en Go. Esta API RESTful se conoce como Casdoor Public API. En otras palabras, con llamadas HTTP, puedes hacer todo tal como lo hace la propia interfaz web de Casdoor. No hay otras limitaciones. La API puede ser utilizada por los siguientes:

  • Frontend de Casdoor
  • SDKs de cliente de Casdoor (por ejemplo, casdoor-go-sdk)
  • Cualquier otro código personalizado del lado de la aplicación

La referencia completa para la Casdoor Public API se puede encontrar en Swagger: https://door.casdoor.com/swagger. Estos documentos de Swagger se generan automáticamente utilizando la herramienta Bee de Beego. Si quieres generar los documentos de Swagger por ti mismo, consulta: Cómo generar el archivo swagger

Cómo autenticarse con Casdoor Public API

1. Por Access token

Podemos usar el token de acceso otorgado a un usuario autenticado para llamar a Casdoor Public API como el propio usuario.

¿Cómo obtener el token de acceso?

La aplicación puede obtener el token de acceso para el usuario de Casdoor al final del proceso de inicio de sesión de OAuth (también conocido como obtener el token por código y estado). Los permisos para las llamadas a la API serán los mismos que los del usuario.

Los siguientes ejemplos muestran cómo llamar a la función GetOAuthToken() en Go a través de 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)
}

Todos los tokens de acceso otorgados también se pueden acceder a través de la interfaz de usuario web por un usuario administrador en la página de Tokens. Por ejemplo, visita: https://door.casdoor.com/tokens para el sitio de demostración.

¿Cómo autenticarse?

  1. Parámetro HTTP GET, el formato de la URL es:

    /page?access_token=<The access token>

    Ejemplo del sitio de demostración: https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIs

  2. Token Bearer HTTP, el formato de la cabecera HTTP es:

    Authorization: Bearer <The access token>

2. Por Client ID y Client secret

¿Cómo obtener el ID de cliente y el secreto?

La página de edición de la aplicación (por ejemplo, https://door.casdoor.com/applications/casbin/app-vue-python-example) mostrará el ID de cliente y el secreto para una aplicación. Esta autenticación es útil cuando quieres llamar a la API como una "máquina", "aplicación" o un "servicio" en lugar de un usuario. Los permisos para las llamadas a la API serán los mismos que los de la aplicación (también conocido como el administrador de la organización).

Los siguientes ejemplos muestran cómo llamar a la función GetOAuthToken() en Go a través de casdoor-go-sdk.

¿Cómo autenticarse?

  1. Parámetro HTTP GET, el formato de la URL es:

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

    Ejemplo del sitio de demostración: https://door.casdoor.com/api/get-global-providers?clientId=294b09fbc17f95daf2fe&clientSecret=dd8982f7046ccba1bbd7851d5c1ece4e52bf039d

  2. Autenticación Básica HTTP, el formato de la cabecera HTTP es:

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

Si no estás familiarizado con la codificación Base64, puedes usar una biblioteca para hacerlo porque HTTP Basic Authentication es un estándar popular soportado por muchos lugares.

3. Por Access key y Access secret

Podemos usar la clave de acceso y el secreto de acceso de un usuario de Casdoor para llamar a Casdoor Public API como el propio usuario. La clave de acceso y el secreto de acceso se pueden configurar en la página de configuración del usuario por un administrador o el propio usuario. La API update-user también se puede llamar para actualizar estos campos. Los permisos para las llamadas a la API serán los mismos que los del usuario.

¿Cómo autenticarse?

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

  2. Parámetro HTTP GET, el formato de la URL es:

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

Ejemplo del sitio de demostración: 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. Por username y password

precaución

Este método de autenticación no es seguro y se mantiene aquí solo por compatibilidad o fines de demostración. Recomendamos usar los tres métodos de autenticación anteriores en lugar de este.

¿Qué sucederá?

Las credenciales del usuario se expondrán como parámetros GET en la URL de la solicitud. Además, las credenciales del usuario se podrán interceptar en texto plano por la red si estás usando HTTP en lugar de HTTPS.

Podemos usar el nombre de usuario y la contraseña de un usuario de Casdoor para llamar a Casdoor Public API como el propio usuario. El nombre de usuario tiene el formato de <El nombre de la organización del usuario>/<El nombre del usuario>. Los permisos para las llamadas a la API serán los mismos que los del usuario.

¿Cómo autenticarse?

  1. Parámetro HTTP GET, el formato de la URL es:

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

Ejemplo del sitio de demostración: https://door.casdoor.com/api/get-global-providers?username=built-in/admin&password=123