授权说明
授权模式
使用凭证式(client credentials)授权模式。
授权模式流程说明
第一步,A 应用在命令行向 B 发出请求。 第二步,B 网站验证通过以后,直接返回令牌。
授权模式结构说明
接口说明
获取access_token
获取access_token。开发者需要缓存access_token,用于后续接口的调用。当access_token失效或过期时,需要重新获取。
请求URL
http
GET /api/oauth2/server/tokens?grant_type=client_credentials&client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET} HTTP/1.1
Accept: application/json
1
2
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" |
校验access_token
校验access_token
请求URL
http
GET /api/oauth2/server/tokens/check?token=${ACCESS_TOKEN} HTTP/1.1
1
URL 参数
字段 | 类型 | 是否必须 | 描述 |
---|---|---|---|
token | STRING | 是 | 需较验的 access_token |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
access_token | STRING | access_token |
token_type | STRING | 固定值 "bearer" |
expires_in | STRING | 有效时间,单位为秒 |
scope | STRING | 授权作用域,目前只支持 "sodu" |
撤销access_token
撤销access_token
请求URL
http
GET /api/oauth2/server/tokens/revoke?token=${ACCESS_TOKEN} HTTP/1.1
1
URL 参数
字段 | 类型 | 是否必须 | 描述 |
---|---|---|---|
token | STRING | 是 | 待撤销的 access_token |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
code | INTEGER | 0 为成功,其它值为失败 |
msg | STRING | 操作结果 |
access_token及sudo说明
access_token
在Header中携带
http
GET /api/{URI} HTTP/1.1
Authorization:Bearer ${ACCESS_TOKEN}
1
2
拼接在url中作为Query String Parameter的一部分
http
GET /api/{URI}?access_token=${ACCESS_TOKEN} HTTP/1.1
1
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
GET /api/{URI}?access_token=${ACCESS_TOKEN}&sudo=uid:${UID} HTTP/1.1
1
设置租户
如果想使用sudo 功能,操作租户的数据,则要传递 tenantId 或者 tenantCode
http
GET /api/{URI}?access_token=${ACCESS_TOKEN}&sudo=uid:${UID}&tenantId=${tenantId} HTTP/1.1
1
或
http
GET /api/{URI}?access_token=${ACCESS_TOKEN}&sudo=uid:${UID}&tenantCode=${tenantCode} HTTP/1.1