1. API授权
1.1. 授权说明
1.1.1. 授权模式
使用凭证式(client credentials)授权模式。
授权模式流程说明
第一步,A 应用在命令行向 B 发出请求。
第二步,B 网站验证通过以后,直接返回令牌。  
授权模式结构说明
1.2. 接口说明
1.2.1. 获取access_token
获取access_token。开发者需要缓存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 | 授权作用域,目前只支持 "sudo" | 
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 | 授权作用域,目前只支持 "sudo" | 
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}