令牌交换
在主体令牌(或被交换令牌)有效期内,可以对令牌进行交换成其他受众的令牌,类似实现用户代理,比如用户在销售系统登录后获取的用户令牌作为主体令牌,销售系统通过客户端模式获取的系统令牌作为行动者令牌(或代理者令牌),然后销售系统就可以使用令牌交换,获取请求OA系统的用户令牌,实现应用系统A代理用户访问OA系统,这种调用主体是用户,只不过是销售系统代理的。
请求方式: POST(HTTPS) Content-Type: application/x-www-form-urlencoded
请求地址: /oauth2/token
详细说明开发者可以参考The OAuth 2.1 Authorization Framework
| 参数 | 必须 | 说明 |
|---|---|---|
| client_id | 是 | 企业服务平台分配的client_id |
| client_secret | 是 | 企业服务平台分配的client_secret |
| grant_type | 是 | 当前值为refresh_token |
| scope | 否 | 授权范围 |
| subject_token | 是 | 主体令牌(或被交换令牌),用来申请新令牌的原始令牌,必填 |
| subject_token_type | 是 | 主体令牌类型指明 subject_token 的类型,必填,默认是 JWT |
| actor_token | 否 | 行动者令牌(或代理者令牌),表示当前代表主体执行操作的客户端或服务 |
| actor_token_type | 否 | 行动者令牌类型,指明 actor_token 的类型,actor_token填写时,actor_token 必填,默认是 JWT |
| requested_token_type | 否 | 请求的令牌类型,指定希望获得的新令牌类型,默认是 JWT |
| resource | 否 | 资源指示符,指定新令牌要访问的资源服务器,通常是资源服务器 URI |
| audience | 否 | 受众,指定新令牌的目标受众,通常对应 JWT 的 aud 声明 |
| 参数 | 说明 |
|---|---|
| access_token | 访问令牌,调用开放接口的凭证 |
| scope | 授权范围 |
| issued_token_type | 签收的token格式 |
| token_type | token类型 |
| expires_in | access_token有效期,单位为秒 |
| error_description | 错误描述 |
| error_code | 错误码 |
| error_uri | 错误详细说明地址 |
a) 成功返回示例如下:
{ "access_token": "eyJraWQiOiJjM2Q2ZDAxYiIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJ4eTA3NjE5IiwiYXVkIjoib2EiLCJuYmYiOjE3ODc5MDAxOTMsImFjdCI6eyJpc3MiOiJodHRwczovL3Rlc3QtZXNwLnhrdy5jbiIsInN1YiI6InNhbGVzIn0sInNjb3BlIjpbIm9wZW5pZCJdLCJpc3MiOiJodHRwczovL3Rlc3QtZXNwLnhrdy5jbiIsImV4cCI6MTc4NzkwNzM5MywiaWF0IjoxNzg3OTAwMTkzLCJqdGkiOiI5NGI2ZjI2ZTg3MTM0MTU4OGNiNDQyZGYyMjY4YjU0MCJ9.GEUi428zgAKnLgd738au2OVHURBaKVg-Qx742Qg4OJ9Gv5cpTuyxH2ZzBMi1y6nIpqq52CepE2Jjhc6GrkKQzyXr95EKXy2t6v7dZx-n0knqqWB7WRp4OlvG0hGVaBNOn-8i4eFoltFzA141OWRBh_mdUmFa0QE8dXK85Se-_7hWrS0yOKuV_SqPg3jKUwFLNJXkIoF3Kt6UmO81h1_lZxTEbr_XnPkwVi1ol4tHgdAmRvlhE3gqHt0xQynv-9bow07Yz5sphgimSJT-ETG2v3GPPGeAwdpE_M8ZWzLg4AdU7DBp3dxfWTtGK_qOt29D5KhrAzkNxplea7DzwJfqRA", "issued_token_type": "urn:ietf:params:oauth:token-type:jwt", "scope": "openid", "token_type": "Bearer", "expires_in": 7199}b)失败返回示例如下:
{ "error_description": "client_id不正确", "error_code": "100006", "error_uri": "https://esp.xkw.cn/doc/error?q=error_code"}
令牌Payload中有act值,可以看出行动者令牌(或代理者令牌)是销售系统sales,令牌主体是用户xy07619,受众是OA系统。
调用方Token缓存机制
Section titled “调用方Token缓存机制”接口返回access_token有效期为expires_in,单位是秒,调用方要做好token的缓存处理,例如:
缓存时间 = expires_in - 60 * 10缓存时间只要将平台返回的expires_in减去10分钟即可。
注意:不要频繁请求获取access_token,以免被限流控制;