API Pública Casdoor
A interface web do frontend do Casdoor é uma SPA (Aplicação de Página Única) desenvolvida em React. O frontend em React consome a API RESTful do Casdoor exposta pelo código backend em Go. Esta API RESTful é referida como Casdoor Public API
. Em outras palavras, com chamadas HTTP, você pode fazer tudo exatamente como a interface web do Casdoor faz. Não há outras limitações. A API pode ser utilizada pelos seguintes:
- Frontend do Casdoor
- SDKs de cliente do Casdoor (por exemplo, casdoor-go-sdk)
- Qualquer outro código personalizado do lado da aplicação
A referência completa para a Casdoor Public API
pode ser encontrada no Swagger: https://door.casdoor.com/swagger. Estes documentos do Swagger são gerados automaticamente usando a ferramenta Bee do Beego. Se você quiser gerar os documentos do Swagger por si mesmo, veja: Como gerar o arquivo swagger
Como autenticar com a Casdoor Public API
1. Por Token de acesso
Podemos usar o token de acesso concedido para um usuário autenticado para chamar a Casdoor Public API
como o próprio usuário.
Como obter o token de acesso?
A aplicação pode obter o token de acesso para o usuário do Casdoor no final do processo de login OAuth (também conhecido como obter o token por código e estado). As permissões para as chamadas de API serão as mesmas que as do usuário.
Os exemplos abaixo mostram como chamar a função GetOAuthToken()
em Go através do 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 os tokens de acesso concedidos também podem ser acessados via interface web por um usuário administrador na página de Tokens. Por exemplo, visite: https://door.casdoor.com/tokens para o site de demonstração.
Como autenticar?
Parâmetro HTTP
GET
, o formato da URL é:/page?access_token=<The access token>
Exemplo do site de demonstração:
https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIs
Token Bearer HTTP, o formato do cabeçalho HTTP é:
Authorization: Bearer <The access token>
2. Por Client ID
e Client secret
Como obter o ID do cliente e o segredo?
A página de edição da aplicação (por exemplo, https://door.casdoor.com/applications/casbin/app-vue-python-example) mostrará o ID do cliente e o segredo para uma aplicação. Esta autenticação é útil quando você quer chamar a API como uma "máquina", "aplicação" ou um "serviço" em vez de um usuário. As permissões para as chamadas de API serão as mesmas que as da aplicação (também conhecida como o administrador da organização).
Os exemplos abaixo mostram como chamar a função GetOAuthToken()
em Go através do casdoor-go-sdk.
Como autenticar?
Parâmetro HTTP
GET
, o formato da URL é:/page?clientId=<The client ID>&clientSecret=<the client secret>
Exemplo do site de demonstração:
https://door.casdoor.com/api/get-global-providers?clientId=294b09fbc17f95daf2fe&clientSecret=dd8982f7046ccba1bbd7851d5c1ece4e52bf039d
Autenticação Básica HTTP, o formato do cabeçalho HTTP é:
Authorization: Basic <The Base64 encoding of client ID and client secret joined by a single colon ":">
Se você não está familiarizado com a codificação Base64, você pode usar uma biblioteca para fazer isso porque a Autenticação Básica HTTP
é um padrão popular suportado por muitos lugares.
3. Por Access key
e Access secret
Podemos usar a chave de acesso e o segredo de acesso de um usuário do Casdoor para chamar a Casdoor Public API
como o próprio usuário. A chave de acesso e o segredo de acesso podem ser configurados na página de configurações do usuário por um administrador ou pelo próprio usuário. a API update-user
também pode ser chamada para atualizar esses campos. As permissões para as chamadas de API serão as mesmas que as do usuário.
Como autenticar?
Create a pair of accessKey and accessSecret in account setting page.
Parâmetro HTTP
GET
, o formato da URL é:/page?accessKey=<The user's access key>&accessSecret=<the user's access secret>"
Exemplo do site de demonstração: 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. Por username
e password
Este método de autenticação não é seguro e é mantido aqui apenas para fins de compatibilidade ou demonstração. Recomendamos usar os três métodos de autenticação anteriores em vez deste.
O que acontecerá?
As credenciais do usuário serão expostas como parâmetros GET
na URL da solicitação. Além disso, as credenciais do usuário serão capturadas em texto simples pela rede se você estiver usando HTTP em vez de HTTPS.
Podemos usar o nome de usuário e senha de um usuário do Casdoor para chamar a Casdoor Public API
como o próprio usuário. O nome de usuário tem o formato de <Nome da organização do usuário>/<Nome do usuário>
. As permissões para as chamadas de API serão as mesmas que as do usuário.
Como autenticar?
Parâmetro HTTP
GET
, o formato da URL é:/page?username=<The user's organization name>/<The user name>&password=<the user's password>"
Exemplo do site de demonstração: https://door.casdoor.com/api/get-global-providers?username=built-in/admin&password=123