单点登录 (SingleSign-On,SSO) ,是一种帮助用户快捷访问网络中多个站点的安全通信技术。单点登录系统基于一种安全的通信协议,该协议通过多个系统之间的用户身份信息的交换来实现单点登录。使用单点登录系统时,用户只需要登录一次,就可以访问多个系统,不需要记忆多个口令密码。
云程平台支持CAS、OAuth2、JWT三种主流的单点登录技术,客户可根据需求选择对应技术方案。
CAS(Central Authentication Service)是 Yale大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法。CAS的目标是允许用户访问多个应用程序只提供一次用户凭据(如用户名和密码)。
CAS 体系包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。
CAS 具有以下特点:
CAS官方文档:https://apereo.Github.io/cas/5.3.x/index.html#
在 CAS 的整个登录过程中,有三个重要的概念。
CAS的单点登录SSO流程如下, 应用系统要做单点登录,需要跟CAS服务进行集成,首先要理解CAS集成流程和原理。
云程平台对CAS 5.3.x版本无缝集成,并对CAS认证校验进行了扩展,项目上请使用平台提供的CAS 5.3.x运行包。运行CAS之前需要在数据库先执行平台的脚本,CAS获取用户信息需访问平台的SYS_USER表。
1 修改数据库连接
打开 casWEB-INFclassesApplication.properties
修改如下配置:
#数据库配置
spring.datasource.driver-class-name=com.MySQL.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/yuncheng2021?characterEncoding=UTF-8&useUnicode=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/ShanghAI
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
spring.jpa.database=mysql
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
2 启动cas
需要准备Tomcat,把cas包放到tomcat/webapps目录下,在tomcat/bin目录下执行startup.bat(windows)或startup.sh(linux)。
启动成功后访问cas地址,界面如下图所示:
云程平台后端已集成CAS代码,在yml配置文件中配置cas服务地址即可。
application.yml 进行如下配置:
#cas单点登录
cas:
prefixUrl: http://cas.example.org:8443/cas
修改
public/config/bootConfig.js
VUE_APP_SSO设置为true
VUE_APP_CAS_BASE_URL配置单点登录服务地址
//单点登录是否开启
VUE_APP_SSO:true,
//单点登录地址
VUE_APP_CAS_BASE_URL:"http://cas.example.org:8443/cas"