6.云表oath2.0单点登录认证服务

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_登录鉴权用户映射关系】记录的云表用户对应该第三方应用的账号名,可以做为第三方账号与云表用户账号映射使用
2023-04-13
12 12