Authing 开放 API
为了给开发者持续提供更全面、更开发者友好的开放能力,Authing V3 版本的 API、SDK 已于 2022 年 10 月 24 日正式上线。推荐您使用最新版的 API 和 SDK, 点击此处跳转 〉
Authing 是一款国内领先的、基于云原生架构的 IDaaS 产品,兼容 OAuth 2.0, OIDC, SAML, AD/LDAP, WS-Fed 等所有主流认证 / 授权协议,可以帮助你快速实现任何 Web、App 和企业软件的身份认证和用户管理,为你的客户和员工提供安全且完善的登录解决方案。
基本概念
Authing API 分类
Authing API 分为两大类:认证(Authentication) API 和管理(Management) API。
- 认证 API 全部以终端用户(End User)的身份进行请求。Authing 认证 API 提供了登录、注册、登出、检查登录态、OIDC 标准协议等所有认证相关接口。此模块适合用于在浏览器环境或者后端服务器环境调用。
- 管理 API 全部以管理员(Administrator)的身份进行请求。用于管理用户池资源和执行管理任务,提供了管理用户、角色、应用、资源等方法;一般来说,你在 Authing 控制台中能做的所有操作,都能用此模块完成。此模块适合在后端服务器环境使用。
针对认证 API 中的社会化登录、OIDC code 换 token 等操作,我们使用提供了多种语言的 SDK ,在 API 之上进行了更高的封装,使得你无需过多关注协议、session 维护等细节,专注业务开发,更推荐你使用 SDK 来实现认证功能。
用户池
用户池是 Authing 租户与租户之间的隔离单位,你拥有的所有用户数据、应用、资源等,都在一个用户池下。如果你还没有注册 Authing 账号,或者还未创建用户池,请先前往 https://authing.co/ 创建你的第一个用户池。创建完成之后,你可以获取到自己用户池的用户池 ID(UserPool Id)和用户池密钥(UserPool Secret),当你需要调用管理 API 的时候,你会需要用到他们。
应用
Authing 中的应用对应了你实际开发的应用,比如当你要基于 Authing 开发一个商城 APP 的时候,你在 Authing 的用户池中也会创建一个对应的应用。每个应用有自己的应用 ID 和二级域名,当你需要调用认证 API 时,你需要用到他们。
API 端点
Authing 开放 API Root 端点为:https://core.authing.cn . 所有请求均通过 HTTPS 加密传输,所有数据通过 JSON 格式传递。
如果是私有化部署的 Authing 服务,API 端点信息请联系你的客户经理获取。
HTTP 请求动词
针对每一个接口,Authing 尽可能使用合适的 HTTP 请求动词,以下是 Authing 使用到的所有 HTTP 请求动词:
HTTP 请求动词 | 描述 |
---|---|
GET | 用于获取资源。 |
POST | 用于创建新资源。 |
PATCH | 用于部分修改资源。例如,一个用户包含很多属性,一个 PATCH 请求可以接收一个或多个用户属性,对用户的部分属性进行修改。 |
PUT | 用于替换资源。 |
DELETE | 用于删除资源。 |
HTTP 请求头
Authing API 会经常使用下面三个请求头,调用 API 时必须带上相应的请求头。
请求头 | 含义 | 适用 API |
---|---|---|
x-authing-app-id | Authing 应用 ID | 认证 API |
x-authing-userpool-id | Authing 用户池 ID | 管理 API |
authorization | 终端用户或者管理员的 token | 认证 API 需要使用终端用户的 token(已登录情况下),管理 API 需要使用管理员的 token。 |
接口鉴权
认证 API 和管理 API 鉴权方式存在差异,认证 API 不需要提供 Token 等访问凭证,调用管理侧 API 需要先使用用户池 ID 和密钥获取管理 Token,详情请见:https://www.apifox.cn/apidoc/project-548164/api-13674992 .
安全域配置
默认情况下,Authing 不会校验 API 请求来源,你可以在 Authing 控制台中的安全设置 - 基础安全配置安全域(CORS),如果有多个域名,可以通过换行符(\n)进行分割。配置之后,只有在你安全域配置白名单中的域,才能调用相关 API。
密码传输加密
涉及到用户密码的接口,需要先对用户输入的密码进行加密。Authing 使用 RSA256 非对称加密方式对密码进行安全传输,你需要使用 Authing 的公钥对密码进行加密,发送到 Authing 服务器后端之后,Authing 会使用只有 Authing 知道的私钥进行解密。
Authing 的公钥如下,你也可以通过此端点拉取:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4xKeUgQ+Aoz7TLfAfs9+paePb
5KIofVthEopwrXFkp8OCeocaTHt9ICjTT2QeJh6cZaDaArfZ873GPUn00eOIZ7Ae
+TiA2BKHbCvloW3w5Lnqm70iSsUi5Fmu9/2+68GZRH9L7Mlh8cFksCicW2Y2W2uM
GKl64GDcIq3au+aqJQIDAQAB
-----END PUBLIC KEY-----
你还可以参考此 Demo,内置了加密密码的方法:https://github.com/Authing/password-encryption .
接口限流
针对免费账户,Authing 默认的接口限流频率为 300 QPS / 用户池。如果触发了我们的 QPS 限制,你将收到以下错误提示:HTTP code 为 429
,响应体为:
{
"code": 429,
"message": "您的请求已超过最大数量限制,请稍后重试"
}
如果你触发了接口限流阈值,请升级套餐并联系 Authing 客服申请更大的 QPS 限制。
错误码
错误代码消息格式如下:
{
message: "系统繁忙,请稍后再试",
code: 1000,
data: null
}
获取帮助
有任何使用上的问题,可以在 Authing 论坛 中提出,我们会尽快为你解答。