iVX怎样做SSO/Auth/Auth2对接

本地sso - 图1

更新时间:2023-09-05 09:52:25

第三方oAuth2接入的模式


iVX应用接入第三方的oAuth2系统,主要有以下两种模式:
本地sso - 图2
模式1:仅使用iVX制作前端UI,所有后台服务通过第三方API来访问。此时,只要在iVX前端登录了第三方oAuth2系统,就可以在浏览器中获取到API的访问token,然后通过前端API组件,访问和oAuth2系统搭配的API即可。
模式2:在iVX应用中开发后台服务,后台服务也需要根据第三方oAuth2系统来鉴权。这种场景,需要额外引入iVX的账号系统组件,在完成第三方oAuth2系统授权之后,再根据返回结果在iVX账号系统组件中生成登录token,用来控制iVX后台服务与前端对应UI控件的访问权限。一个iVX账号系统,可以控制多个iVX应用,以实现多应用的统一登录认证(sso)。
案例预览地址

前端接入oAuth2登录

以上两种模式,都需要在首先前端应用接入oAuth2的登录认证,接下来我们以微软Azure的统一认证接口为例,详细介绍如何接入一个典型的oAuth2接口。
通常来说,一个oAuth2接口都包含三个步奏:①获取授权代码②获取(凭证)token③获取用户信息,详细文档点击这里查看 ####
1、获取授权代码
本地sso - 图3
其中包含了五个必须填入的参数,具体的说明见上图,这里和大家简单介绍一下每个参数大致的获取位置。
第一个参数是tenant:
在Azure Active Direcoty下选择应用程序
本地sso - 图4
选择你已经创建的应用(若未创建可在这里进行创建)
本地sso - 图5
租户ID就对应了tenant的值。
本地sso - 图6
第二个参数是client_id:
对应着刚刚打开应用这个界面中的应用程序(客户端)ID
本地sso - 图7
第三个参数是response_type:
通常来说都是通过获取授权代码来换取凭证,所以这里写入固定的值code即可。
第四个参数是redirect_uri:
这个参数在我们申请应用的时候就可以填写,也可以点击重定向URI重新设置,对于web应用而言,这里写入应用的发布地址即可,注意这个参数必须写入和配置中完全一致的地址,否则页面无法实现重定向
本地sso - 图8
本地sso - 图9
第五个参数是scope:
这个参数定义了可以获取权限的范围,在示例中写入的参数为
openid offline_access https://graph.microsoft.com/mail.read
按照文档的规则,拼接后获取到了授权的地址:
本地sso - 图10
前端打开这个网址,就会打开授权登陆页面
本地sso - 图11
页码会跳转至微软的登陆界面,登陆成功后,页码会跳转回uri中设置的网址,并且在url参数中会携带一个code参数,到这一步,就完成了获取授权代码
本地sso - 图12
2、获取凭证(token)
在文档中出现了两个之前没有见过的必填参数
本地sso - 图13
其中code就是我们通过第一步获取授权代码后返回在url参数中code的值,我们可以通过获取url参数的方法获取;client_secret需要我们去填入客户端凭证(若没有新建即可),这个值仅在新建时可见,请谨慎保存
本地sso - 图14
本地sso - 图15
将client_secret的值填入Secret Key 中
本地sso - 图16
按照文档的方法拼接请求地址与参数,即可获取token
本地sso - 图17
3、获取用户信息
获取用户信息只需要使用token即可,文档地址点击这里,我们在Header中拼接token信息即可
本地sso - 图18
这样我们就可以获取到azure中用户的信息,完成了oAuth2的登陆操作:
本地sso - 图19
接着,我们将登陆后的账户与iVX的账号系统结合起来:
iVX账号系统是在iVX中设置用户权限与登陆token的组件,我们选中对象数的后台,点击菜单栏的后端资源
本地sso - 图20
在账号系统标签下点击新建账号系统
本地sso - 图21
第一次新建的账号系统会自动弹出权限管理,在权限管理分类下创建不同的权限组
本地sso - 图22
在预览版与发布版角色中建立角色并分配权限
本地sso - 图23
设置完成后,将该账号系统添加至后台
本地sso - 图24
接着我们将oAuth2登陆后的用户信息与iVX账号系统连接起来,oAuth2获取到用户信息后,我们调用iVX账号系统生成登陆token并返回
本地sso - 图25
在前台初始化的时候,我们首先调用账号系统的解析登陆token,若该token存在且未过期,我们就可以直接获取账号系统缓存中的账号信息;若不存在或者已过期,我们就跳转到登录页去重新发起oAuth2登陆。
最后不同的应用中可以在后台添加同一个账号系统,以实现在iVX不同应用中的统一登陆。

点击下载demo