公共API
Casdoor 网页 UI 是一个 React单页应用,它与您的代码使用相同的 REST API 进行通信。 该API即Casdoor 公共API:UI 所做的一切均可通过 HTTP 完成。 以下人员使用:
- Casdoor前端
- Casdoor SDKs(例如casdoor-go-sdk)
- 您自己的应用和脚本
API参考: https://door.casdoor.com/swagger。 API参考: https://door.casdoor.com/swagger。
响应语言
响应可本地化。 发送``Accept-Language标头,以获取该语言的错误消息和其他文本:
# 示例:以法语获取错误消息 curl -X GET https://door.casdoor.com/api/get-account \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept-Language: fr"
支持的代码包括en, zh, es, fr, de, ja, ko,以及其他。 查看国际化以获取完整列表。
机器对机器(M2M)身份验证
M2M身份验证适用于调用API的服务或脚本无需用户在场。 用途:
- 以编程方式调用Casdoor的后端服务
- 使用访问令牌的CLI工具
- B2B:每个组织都有自己的客户端凭据的应用程序
- 计划任务、同步和系统集成
- 服务间身份验证
Casdoor支持通过以下方式实现M2M:
- 客户端凭据授权(OAuth 2.0)— 推荐。 使用客户端 ID 和客户端密钥获取访问令牌。
- 每次请求中的客户端 ID + 客户端密钥— 直接传递凭据(请参阅下面的方法 #2)。
典型的M2M用例
- **按组织的 API 访问权限:**每个组织一个应用程序;客户端凭据提供该组织的管理员级访问权限。
- **下游服务的令牌:**使用客户端凭据获取 CLI 或其他服务的令牌。
- **服务间通信:**后端以应用程序(相当于组织管理员)的身份调用API。
如何进行身份验证
1. 访问令牌(用户上下文)
使用用户登录后获取的访问令牌(例如,来自OAuth代码交换)。 API调用以该用户的权限运行。
获取令牌
该应用在 OAuth 登录流程结束时接收令牌(代码 + 状态)。 已颁发的令牌在Casdoor UI中也可查看(令牌页面,例如:https://door.casdoor.com/tokens)。
示例(Go,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)
}
发送令牌
-
查询参数:
/page?access_token=<访问令牌>演示站点示例:
https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIs -
Bearer头:
Authorization: Bearer <访问令牌>
2. 客户端 ID 和客户端密钥 (M2M)
用于机器对机器调用(无需用户)。 权限为应用程序的权限(等同于组织管理员)。