1. API授权
1.1. 授权说明
1.1.1. 授权模式
使用凭证式(client credentials)授权模式。
授权模式流程说明
第一步,A 应用在命令行向 B 发出请求。 第二步,B 网站验证通过以后,直接返回令牌。
授权模式结构说明
1.2. 接口说明
1.2.1. 获取access_token
获取access_token
请求URL
GET /api/oauth2/server/tokens?grant_type=client_credentials&client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}
URL 参数
字段 | 类型 | 是否必须 | 描述 |
---|---|---|---|
grant_type | STRING | 是 | 授权类型,固定值 :client_credentials。表示采用凭证式 |
client_id | STRING | 是 | 客户端id |
client_secret | STRING | 是 | 客户端secret |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
access_token | STRING | access_token |
token_type | STRING | 固定值 "bearer" |
expires_in | STRING | 有效时间,单位为秒,默认为12小时 |
scope | STRING | 授权作用域,目前只支持 "sodu" |
1.2.2. 校验access_token
校验access_token
请求URL
GET /api/oauth2/server/tokens/check?token=${ACCESS_TOKEN}
URL 参数
字段 | 类型 | 是否必须 | 描述 |
---|---|---|---|
token | STRING | 是 | 需较验的 access_token |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
access_token | STRING | access_token |
token_type | STRING | 固定值 "bearer" |
expires_in | STRING | 有效时间,单位为秒 |
scope | STRING | 授权作用域,目前只支持 "sodu" |
1.2.3. 撤销access_token
撤销access_token
请求URL
GET /api/oauth2/server/tokens/revoke?token=${ACCESS_TOKEN}
URL 参数
字段 | 类型 | 是否必须 | 描述 |
---|---|---|---|
token | STRING | 是 | 待撤销的 access_token |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
code | INTEGER | 0 为成功,其它值为失败 |
msg | STRING | 操作结果 |
1.3. access_token及sudo说明
1.3.1. access_token
在Header中携带
Header:
Authorization:Bearer ${ACCESS_TOKEN}
拼接在url中作为Query String Parameter的一部分
http://{HOST}:{PORT}/{URI}?access_token=${ACCESS_TOKEN}
1.3.2. sudo
设置sudo
sudo拼接在url中作为requestParam,sudo支持通过用户的id、loginName(登录名)、email(邮箱)、mobile(手机)传递用户身份。
以下四种sudo格式为:
- sudo=uid:${UID}
- sudo=loginName:${LOGIN_NAME}
- sudo=email:${EMAIL}
- sudo=mobile:${MOBILE}
sudo=username:${LOGIN_NAME} (不推荐使用)
http://{HOST}:{PORT}/{URI}?access_token=${ACCESS_TOKEN}&sudo=uid:${UID}
设置租户
如果想使用sudo 功能,操作租户的数据,则要传递 tenantId 或者 tenantCode
http://{HOST}:{PORT}/{URI}?access_token=${ACCESS_TOKEN}&sudo=uid:${UID}&tenantId=${tenantId}
或
http://{HOST}:{PORT}/{URI}?access_token=${ACCESS_TOKEN}&sudo=uid:${UID}&tenantCode=${tenantCode}