1 文档目的
为了支持云表业务服务器与第三方认证平台授权登录,以云表平台作为授权服务方,提供单点登录授权接口,做到多个不同的第三方系统基于云表平台进行单点授权登录,通过云表平台统一管理账户信息。
需要云表服务器版本3.3.42.x版本及以上才支持,并且需要开通【单点登录】功能授权
2 解决方案
提供以下两个方式进行授权登录,并使用现有的【第三方应用授权】进行鉴权,“应用类型”增加为“单点登录授权”,“应用名称”使用英文的第三方系统代号(下面所说的“应用名称”都是同一个定义)
2.1 方式一:使用tempToken一次性授权令牌
2.1.1 该方案提供较简单的认证登录过程
● 新增全局数据接口【获取单点登录授权令牌(应用名称)】,为当前用户生成一次性tempToken令牌(令牌失效时间默认10分钟)
● 通过参数传递给第三方系统(可以打开网页填表公式),再由第三方系统调用云表系统提供的全局数据接口【获取单点登录用户信息(应用名称,授权令牌)】获取对应的用户信息(使用标准openapi接口调用),获取对应的用户信息,实现单点登录到第三方系统
2.1.2 适用场合
● 简单易懂,使用现有的openapi接口,第三方对接起来比较方便,适用于无第三方无登录页面场景
● 以云表作为门户入口,在云表增加一个模板图标作为第三方入口,里面使用打开网页填表公式进行跳转第三方系统
2.2 方式二:提供OAuth2.0授权认证服务
2.2.1 该方案采有标准通用的OAuth2.0协议
● 第三方系统通过访问云表提供的/{enpId}/oauth2/authorize页面接口,请求参数支持client_id={应用名称}&response_type=code&redirect_uri=,云表将生成authorize_code并跳转传递参数到redirect_uri页面
● 第三方登录页面拿到authorize_code后,通过上述对应的appname和appkey访问云表系统提供的全局数据接口【获取单点登录用户信息(应用名称,授权令牌)】获取对应的用户信息(使用标准openapi接口调用),获取对应的用户信息,实现单点登录到第三方系统
2.2.2 使用场合
● 标准通用的OAuth2.0授权协议
● 可以用授权跳转方式进行单点登录,即第三方如果登录失效,可以直接跳转到云表授权地址重新获取授权码实现单点登录
3 接口参数约定
3.1 云表服务器提供授权令牌获取接口
请求方式:GET
请求地址:http://{127.0.0.1:88}/{应用ID}/oauth2/authorize? response_type=code&client_id={应用名称}&redirect_uri={第三方系统跳转url}
参数说明:
参数 | 必须 | 说明 |
127.0.0.1:88 | 是 | 云表业务服务器访问的地址,如192.168.1.111:88 |
应用ID | 是 | 云表应用ID,如10001 |
response_type | 否 | 授权令牌传入到第三方系统跳转url时,使用指定的参数名,默认使用code |
client_id/应用名称 | 是 | 在【第三方应用授权】模板定义的应用名称,如hr |
redirect_uri/第三方系统跳转url | 是 | 第三方系统接收授权令牌的页面地址,云表获取授权令牌成功后,会302重定向跳转到该地址 |
返回结果:
a)当授权令牌获取成功时,会进行302重定向到{第三方系统跳转url }
b)如果授权令牌获取不成功,则页面会跳转到云表登录页面,登录成功后再次进行授权跳转到第三方系统;
3.2 全局数据接口【获取单点登录授权令牌(应用名称)】
3.2.1 需要先定义【第三方应用授权】
在【第三方应用授权】新建授权记录,“应用类型”为“单点登录授权”,“应用名称”使用英文的第三方系统代号
3.2.2 数据接口定义
参数说明:
参数 | 必须 | 说明 |
应用名称 | 是 | 上述【第三方应用授权】记录的应用名称,如hr |
返回值说明:
参数 | 必须 | 说明 |
授权令牌 | 是 | 当前登录用户身份的授权令牌,可用于后续授权获取到用户信息 |
3.3 全局数据接口【获取单点登录用户信息(应用名称,授权令牌)】
3.3.1 调用方式
只能在openapi调用,具体调用及鉴权方式,见openapi文档的调用全局数据接口一节
https://openapi-doc.iyunbiao.com/web/#/5/38
3.3.2 数据接口定义
参数说明:
参数 | 必须 | 说明 |
应用名称 | 是 | 上述【第三方应用授权】记录的应用名称,如hr |
授权令牌 | 是 | 上述步骤获取到的授权令牌 |
返回值说明:
参数 | 必须 | 说明 |
账号 | 是 | 授权令牌对应的云表用户账号 |
姓名 | 否 | 云表用户信息的“姓名” |
电话 | 否 | 云表用户信息的“电话” |
编号 | 否 | 云表用户信息的“用户编号” |
第三方账号 | 否 | 【SYS_登录鉴权用户映射关系】记录的云表用户对应该第三方应用的账号名,可以做为第三方账号与云表用户账号映射使用 |