文章

集成CAS单点登录功能

集成CAS单点登录功能

后端框架已实现与CAS单点登录系统对接使用,后端同时支持普通登录和CAS单点登录。可以通过参数配置切换前端系统使用哪种登录方式。

开发框架系统对接CAS单点登录系统的时序图如下所示:

29-1

1.CAS单点登录处理流程

前端页面处理流程步骤为:

图上的1,3,6,12红色字体的流程步骤。

前端需要代码来处理。


后端服务处理流程步骤:

图上2,7,10,11蓝色字体的流程步骤。

后端框架已实现代码功能,使用时只需要配置参数就行,见后续说明。


CAS处理流程步骤:

图上4,5,8,9紫色字体的流程步骤。单点登录系统自己处理。


2.使用后端框架的单点登录集成功能

2.1.系统参数表添加单点登录配置参数:

1
insert into "UTILITY_SYSTEM_CONFIG" ("ID","NAME","VALUE","CREATE_USER","CREATE_TIME","UPDATE_USER","UPDATE_TIME","DEFAULT_VALUE") values ('ssoLoginParam', 'ssoLogin', 'enable', 'operator', null, 'operator', null, 'disable');
字段名 字段值
VALUE enable:启用单点登录disable:禁止单点登录


当启用单点登录时,所有401返回值如下所示:

1
{"code": 401,"message": "未授权访问","data": {"loginURL": "xxx"}}

loginURL值为单点登录URL,例如:http://xxx:xxx/cas/login?service=http://10.110.200.53:5102/home

当前端页面发现401返回data中的loginURL不为空时,需要重定向到loginURL指向的页面。


2.2.后端配置单点登录相关参数

单点登录相关参数配置在security-xxx.properties文件中,示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#-------------------单点登录参数配置-----------------------------------
#框架登录验证方式:
#basic:普通账号密码登录方式;sso-cas:单点登录CAS集成方式
base.security.config.mode=sso-cas
#401无权限访问后返回的登录页面地址,现为CAS登录页面URL
base.security.login.url=http://{casUrl}/login?service=http://{frontendUrl}
#CAS登录成功后跳转到的前端页面URL,service参数值
base.security.sso.cas.login.success.url=http://{frontendUrl}
#CAS API地址,后端用来验证CAS的ST有效性
base.security.sso.cas.api.url=http://{casUrl}
# CAS ticket验证成功后返回的用户标识属性名称,此属性值对应用户的account值,单点登录成功后此用户会自动登录应用系统
base.security.sso.cas.user.identifier={userIdentifier}
#CAS ST保存时间,用于退出时根据ST注销session使用
base.security.sso.cas.st.timeout=12
#开启单点登录日志
logging.level.com.framework.backend.security.controller.SsoController=debug


3.单点登出功能

  • 前端页面直接重定向到单点登出URL:

    • http://{casUrl}/logout
    如果想退出到指定页面,则前端重定向到:http://{casUrl}/logout?service=xxx。后面service为指定页面的地址。
  • 同时需要在单点登录系统中配置登出回调URL,后端不需要改动任何代码:

    • http://{backendUrl}/services/sso/ssoLogout


4.后端开发框架处理

后端开发框架了已经放开了/sso/ssoLogin和/sso/ssoLogout方法的登录验证,不需要登录系统就可以直接调用这两个方法。

本文由作者按照 CC BY 4.0 进行授权