开始开发

企业开放平台提供了OAuth2的授权码模式和客户端模式两种授权方式,获取客户端(接口调用方)对调用资源的授权。

1、统一登录就是授权码模式,返回的access_token中有用户信息(用户id)。

2、另一种就是客户端模式,是没有经过用户授权的,返回的access_token,没有携带企业用户信息(用户id),只有客户端(接口调用方)的client_id。

注意:企业开放平台提供统一的客户端密钥管理,统一授权,但目前开放平台的授权仅限于对开放平台的scope进行授权,比如bi接口,scope值为bi,具体的资源权限由bi应用系统来控制,比如说调用方只能调用bi系统的某些指定的接口等,这块日后开放平台会提供统一的资源权限授权解决方案。

 

OAuth2.1简介

OAuth2.1的设计背景,详细的协议介绍,开发者可以参考The OAuth 2.1 Authorization Framework,以及OpenID Connect Core 1.0 incorporating errata set 2

 

客户端(OAuth2客户端模式)对接流程

image-20240315164058623

 

客户端授权

接口请求

请求方式:POST(HTTPS) Content-Type: application/x-www-form-urlencoded

请求地址:

正式环境: https://esp.xkw.cn/oauth2/token

沙箱测试环境:https://esp.doc.xkw.cn/oauth2/token

 

参数说明

详细说明开发者可以参考The OAuth 2.1 Authorization Framework

参数必须说明
grant_type当前值为client_credentials
scope授权范围,多个使用空格分隔,如”bi sales"。
client_id企业服务平台分配的client_id
client_secret企业服务平台分配的client_secret

 

返回结果

参数说明
access_token访问令牌,调用开放接口的凭证
scope授权范围,返回授权请求中的scope
token_typetoken类型
expires_inaccess_token有效期,单位为秒
error_description错误描述
error_code错误码
error_uri错误详细说明地址

a) 成功返回示例如下:

b)失败返回示例如下:

 

查看令牌内容

access_token内容是jwt格式,解析内容如下:

image-20240315165007200

从内容可以看出,是oa系统请求授权,对bi和sales应用系统的访问,头部内容是签名算法和公钥ID。

 

授权范围说明

以上内容解析出来,scope值仅仅是openid,只是一个例子,可以为空,目前企业服务平台仅认证,不授权。后续升级使用会统一通知。

 

调用方Token缓存机制

接口返回access_token有效期为expires_in,单位是秒,调用方要做好token的缓存处理,

缓存时间只要将平台返回的expires_in减去10分钟即可。

注意:不要频繁请求获取access_token,以免被限流控制;

 

调用方接口请求

在http请求的header部分,增加以下内容,key为Authorization,value为"Bearer " + access_token值

keyValue
AuthorizationBearer eyJraWQiOiJjM2Q2ZDAxYiIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJvYSIsImF1ZCI6Im9hIiwibmJmIjoxNzEwNDkxNTI3LCJzY29wZSI6WyJiaSIsInNhbGVzIl0sImlzcyI6Imh0dHBzOi8vZXNwLmRvYy54a3cuY24iLCJleHAiOjE3MTA0OTE4MjcsImlhdCI6MTcxMDQ5MTUyN30.EAzeoxwK0AAs0E2XhFIPtuOD3ld50I33hSA6CTJIvhdPCTV9ozflMbHEHVNZBXtRwM7Xq8qw-b975vBjJywZ5aco4MUVx-YRWAWETbX0t3qzSEsMujzIEjbMol8mEyYukYW-5z2n1RCj_TOkhaEcgVIlEuzk-JmQbWV5SqZCjOOacTwA6fX-B8nu6PLGt7ARYEGSXfnA0cLiMURI4_3E0Y5YN-ArzesJWsmdfCmojX5tUxhOgNP_1GUQUT6Qu-5nAtyYSQl-7QNaTmdCmOOF9gyGjc59L6VN7zI9fluWCbYjF-BLk3CMHmq7h7Py7Bd4hl3OYmLH4iMrXvYc7kMpUw

 

应用系统API

应用系统的开放接口,接口提供方就是增加令牌的合法性验证,验证通过后,可以获取令牌中的内容,比如接口的调用方等信息,与现有系统的验证方式不冲突,只是增加一个判断,可以两套方案并行,平滑过度;