本帖最后由 胡辰硕 于 2023-12-1 10:22 编辑
一、背景
客户通过零信任发布出来OA资源,登录OA需要用户名密码,客户希望实现登录零信任后不需要再次输入用户名密码,以实现单点登录。
二、解决方案
OA系统资源使用反向Oauth对接,可以做到OA的单点登录,只要登录零信任即可通过点击应用直接登录业务系统,这也是个零信任的推荐标准场景。
解决方案的前提条件:
2.1 客户的OA或者要对接的系统必须为B/S应用,不能是C/S应用,否则无法使用;
2.2 可以用隧道资源发布或者web资源发布;
2.3 零信任的用户信息与统一身份认证平台的用户信息需要保持一致。
三、基本原理
3.1 该解决方案的实现原理:
用户上线零信任后是通过传递code信息,客户OA系统识别到零信任传递来的code即可实现互信,并让用户上线,中间并无校验用户密码的过程。
3.2 该解决方案的登录流程:
步骤1:用户使用aTrust账号登录上线
步骤2:用户通过Proxy(代理网关)访问【门户系统】
步骤3:Proxy(代理网关)代理访问【门户系统】
步骤4:判断用户未登录【门户系统】
步骤5-6:302重定向到SDPC(控制中心)获取code,重定向URL为:https://客户端接入地址/passport/v1/public/auth2ssoLogin?redirectUrl=${门户系统回调域名}&appid=${appid}&reponseType=code
步骤7-8:SDPC(控制中心)接收到请求校验参数无误后,产生code并通过302重定向至${门户系统回调域名}?code=${SDPC产生的code}
步骤9-10:【门户系统】接收到code后,调用通过code获取用户信息接口
步骤11:SDPC(控制中心)校验code成功后返回用户信息
步骤12:【门户系统】获得用户信息后进行上线操作
四、配合对接
当有反向Oauth配置需求时,我们需要提供给三方开发人员哪些东西?如何沟通,有哪些需要注意的点。
4.1 深信服工程师需要操作:
1、给客户和三方研发讲解明白基本原理。
2、零信任上面创建一个测试业务填写客户新建的web服务器,给三方开发人员提供APP ID和APP Secret。将回调域名填入三方研发给的域名。
3、使用postman或者apifox能通过设置responseType字段为codeJson获取用户信息即可。 4、需要使OA系统能够访问到零信任控制中心接入地址,以获取带有用户信息的code。
codeJson测试能够获取到code
4.2 三方研发需要操作:
1、内网创建一个web服务器用来模拟三方系统,给出创建的web服务器地址。
2、给出回调域名,需要将code传入的域名。(新建的web服务器的地址+一些参数)
3、调用零信任客户端获取code值。
4、修改业务系统代码,确保能够根据零信任传来的code进行上线。
4.3 需要注意:
1、在测试过程中,responseType字段后跟code时,需要添加redirectUrl字段,后面接上回调域名,该回调域名需要做一次 转义。 2、业务正式上线后,需要保证生产业务的OA服务器能够正常从零信任上面取到code。(OA要能够访问到零信任的接入地址)
如果是OA能上互联网: APPUrl = https://零信任控制中心公网接入地址/passport/v1/public/auth2ssoLogin UserUrl = https://零信任控制中心公网接入地址/passport/v1/user/getUserInfoBvCode
如果OA不能上互联网:
APPUrl = https://零信任控制中心公网接入地址/passport/v1/public/auth2ssoLogin UserUrl = https://零信任控制中心内网接入地址/passport/v1/user/getUserInfoBvCode
五、最终效果
5.1 之前登录了零信任后还需要手动的输入用户名密码
5.2 登录零信任后可以直接单点登录
5.3 客户对产品的认可
|