概述
CAS是一种开放授权协议,它允许用户授权第三方应用访问他们在另一个服务提供方上的数据,而无需分享他们的凭据(如用户名、密码)。这种协议非常适合用于实现单点登录(SSO),使用户在多个应用之间无缝切换,无需重复登录。
前置条件:
1、统一登录平台使用标准CAS2.0或3.0协议,希望单点登录到Smarrbi系统。
2、统一登录平台跟Smarrbi系统用户一致;可参考 用户同步 做用户同步
3、部署CAS单点登录扩展包,下载:xxxx,参考:部署扩展包
适用场景:
1、统一登录平台通过连接单点登录到BI系统首页。
2、统一登录平台通过连接单点登录打开BI系统集成页面,包括打开资源、创建资源、打开模块等。
3、统一登录平台通过连接单点登录打开BI系统移动端首页
4、未登录时,浏览器输入BI系统连接自动跳转到统一登录平台的登录页面。
5、通过BI系统前端注销则注销整个统一登录平台。
本扩展包是CAS单点登录的新版本,和旧的CAS扩展包不兼容
注:如果部署新的CAS V2,先把旧的扩展包禁用或者删除,同时把config配件界面的“加密类型”及“登录验证类”设置改成产品默认值,如下图。
CAS单点登录流程
单点登录使用限制及主要能力
1、支持PC端及集成页面、插件端、移动端APP的单点登录。
插件/移动端APP登录系统需进行"登录配置插件"才可以成功登录,详情参考本文档“插件及移动端APP登录”章节
2、可通过界面配置登录流程中涉及的接口地址及接口参数等。
2.1、支持CAS2.0 或3.0版本
2.2、支持自定义灵活配置接口:包括:CAS server 地址、CAS登录地址、统一注销地址
2.3、支持在插件端或APP端通过扩展的方式做特殊的登录验证处理(比如密码二次加密、传递更多静态参数等)
3、支持登录用户处理:用户不存在时的处理逻辑可配置,包括新建用户/不允许登录等
4、支持逃生通道:允许部分或全部用户使用逃生通道,或者直接禁用逃生通道
5、如果CAS登录改造较多,有更多特殊配置,可尝试使用 自建协议配置实现。
单点登录配置
入口
入口:运维设置/单点登录-CAS协议配置;需要操作权限:"运维设置/模块配置与管理"(操作权限参考操作权限)
使用流程
1、获取统一登录平台中CAS服务器的协议版本号及服务器地址,并记录备用。
2、设置需要应用CAS单点登录的页面范围,如果未选择相应的页面,则打开该页面会继续使用BI系统的账号密码进行登录验证。
当应用范围列表中未包含需要单点登录处理的页面时,可通过"自定义"添加需要单点登录的其它页面。
3、配置CAS服务器信息(依据第一步获取的信息填写):包括Server地址、登录地址、注销地址,非特殊情况下,可按如下示例填写:
server地址:https://服务器地址/cas
登录地址:https://服务器地址/cas/login
注销地址:https://服务器地址/cas/logout
4、可选择配置登录用户属性:在一些特殊场景下,CAS返回的用户信息中,唯一的登录账号并非CAS中的 name 属性值,而是其他属性,例如:mobile(手机号),此时直接指定用于登录BI产品的用户属性信息。
5、可选择配置登录用户处理规则:
5.1、当BI系统的用户未实时跟统一登录的用户同步时,会出现登录用户在BI系统中不存在的情况。
5.2、当遇到不存在的用户时,产品默认会提示:当前用户在BI系统中不存在,请联系管理员添加。
5.3、客户可选择自动创建用户,并分配到某个默认组,默认角色,以便用户登录后直接访问有权限的资源。
5.3.1、当前只支持分配到固定的用户组或角色,不支持动态同步用户组。
6、可选择配置逃生通道:
6.1、逃生通道允许用户绕开CAS登录协议,直接使用BI系统账号密码登录,主要是解决CAS服务异常、BI系统单点登录配置错误等导致无法正常登录BI系统的异常情况。
6.2、产品默认开启了逃生通道,用户可基于实际需求灵活配置。
6.3、如果插件端/移动端APP应用了CAS登录,则逃生用户也可以直接在插件端/移动端使用非CAS方式登录。
注意:在单点登录验证成功前,不要禁用逃生通道,否则将无法正常登录BI系统继续调整配置。
7、可选插件端/移动端APP登录特殊处理:
7.1、插件端和移动端APP的CAS验证,由于无法直接使用CAS的统一登录界面,是把BI系统登录界面用户输入的账号密码传递到CAS服务器验证,当CAS验证需要密码加密后传输或传递更多参数时,可启用 "登录特殊处理"
7.2、产品支持直接通过界面配置传递更多静态参数值;比如传递多一个参数
7.3、密码加密等其它处理需要额外定制开发,基于实际业务场景,通过java扩展接口实现。
7.4、登录接口入参说明:
1、自定义参数名称,基于接口实际参数名称填写:CAS默认的登录参数是:username、password。
2、选择参数来源及参数值:可配置静态值、用户界面输入的账号/密码
8、验证单点登录是否成功:有以下几种方式验证
8.1、打开浏览器独立新窗口,直接在地址栏中输入BI系统的访问连接,正常跳转到统一登录平台登录页,输入统一登录的账号密码后,正确跳转回BI系统,则成功
8.2、在BI系统中点击注销,会调用CAS接口登出,并回到统一登录平台登录页
8.3、如果单点登录不成功,可基于具体的错误提示信息进行调整。
插件端/移动APP使用CAS登录
1、如果在“单点登录-CAS协议配置”中启用了插件和移动APP使用CAS登录,如果要在插件/移动APP正常使用CAS登录,则还需要在客户端中应用CAS。
插件客户端:在“配置插件”中配置好CAS登录地址,并选择使用
移动APP客户端:在服务器配置的“CAS认证地址”中填写CAS登录地址
2、如果在“单点登录-CAS协议配置”中启用了插件和移动APP使用CAS登录,并且未进行上述第1点的客户端配置,则插件端/移动APP还是使用BI系统的登录验证,并且只能使用“允许逃生用户”中配置的用户登录。
3、如果想要在插件端/移动APP不使用CAS登录,则可以直接在“单点登录-CAS协议配置”中不启用相关配置。
插件端/移动端APP登录特殊处理配置示例
原始接口说明:
接口传递的密码需要加密并且需要多传appcode参数
BI产品配置:
再自定义一个Java处理类(处理密码加密逻辑),放到扩展包中;然后在【高级】配置中配置自定义的类名,比如:
smartbi.ext.cassso.client.TestCASClientConnector
主要包含三个属性和四个方法:
smartbiUrl参数为smartbi服务地址
casLoginUrl参数为配置的CAS登录地址
configs参数为配置的参数信息
自定义Java处理类代码示例:
客户可自行按照示例编写Java类,并编译为.class文件,再放置到扩展包的对应目录下。(扩展包的本质为zip压缩包)