云程平台支持CAS、OAuth2、JWT三种主流的单点登录技能,客户可根据需求选择对应技能方案。
一、CAS总体架构先容CAS(Central Authentication Service)是 Yale大学发起的一个企业级的、开源的项目,旨在为 Web 运用系统供应一种可靠的单点登录办理方法。CAS的目标是许可用户访问多个运用程序只供应一次用户凭据(如用户名和密码)。
CAS 体系包含两个部分: CAS Server 和 CAS Client。CAS Server 须要独立支配,紧张卖力对用户的认证事情;CAS Client 卖力处理对客户端受保护资源的访问要求,须要登录时,重定向到 CAS Server。

CAS 具有以下特点:
一个开放的,文档完好的协议。开源的JAVA做事器组件。CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 运用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。文档社区化和实现的支持。具有广泛的客户群的支持。CAS官方文档:https://apereo.github.io/cas/5.3.x/index.html#
二、CAS单点事理和集成流程在 CAS 的全体登录过程中,有三个主要的观点。
TGT:TGT 全称叫做 Ticket Granting Ticket,这个相称于我们平时所见到的 HttpSession 的浸染,用户登录成功后,用户的基本信息,如用户名、登录有效期等信息,都将存储在此。TGC:TGC 全称叫做 Ticket Granting Cookie,TGC 以 Cookie 的形式保存在浏览器中,根据 TGC 可以帮助用户找到对应的 TGT,以是这个 TGC 有点类似与会话 ID。ST:ST 全称是 Service Ticket,这是 CAS Sever 通过 TGT 给用户发放的一张票据,用户在访问其他做事时,创造没有 Cookie 或者 ST ,那么就会 302 到 CAS Server 获取 ST,然后会携带着 ST 302 回来,CAS Client 则通过 ST 去 CAS Server 上获取用户的登录状态。CAS的单点登录SSO流程如下, 运用系统要做单点登录,须要跟CAS做事进行集成,首先要理解CAS集成流程和事理。
用户通过浏览器访问运用1,运用1 创造用户没有登录,于是返回 302,并且携带上一个 service 参数,让用户去 CAS Server 上登录。浏览器自动重定向到 CAS Server 上,CAS Server 获取用户 Cookie 中携带的 TGC,去校验用户是否已经登录,如果已经登录,则完成身份校验(此时 CAS Server 可以根据用户的 TGC 找到 TGT,进而获取用户的信息);如果未登录,则重定向到 CAS Server 的登录页面,用户输入用户名/密码,CAS Server 会天生 TGT,并且根据 TGT 签发一个 ST,再将 TGC 放在用户的 Cookie 中,完成身份校验。CAS Server 完成身份校验之后,会将 ST 拼接在 service 中,返回 302,浏览器将首先将 TGC 存在 Cookie 中,然后根据 302 的指示,携带上 ST 重定向到运用1。运用1 收到浏览器传来的 ST 之后,拿去 CAS Server 上校验,去判断用户的登录状态,如果用户登录合法,CAS Server 就会返回用户信息给 运用1。浏览器再去访问运用2,运用2 创造用户未登录,重定向到 CAS Server。CAS Server 创造此时用户实际上已经登录了,于是又重定向回运用2,同时携带上 ST。运用2 拿着 ST 去 CAS Server 上校验,获取用户的登录信息。在全体登录过程中,浏览器分别和 CAS Server、运用1、运用2 建立了会话,个中,和 CAS Server 建立的会话称之为全局会话,和运用1、运用2 建立的会话称之为局部会话;一旦局部会话成功建立,往后用户再去访问运用1、运用2 就不会经由 CAS Server 了。三、CAS做事端如何支配
云程平台对CAS 5.3.x版本无缝集成,并对CAS认证校验进行了扩展,项目上请利用平台供应的CAS 5.3.x运行包。运行CAS之前须要在数据库先实行平台的脚本,CAS获取用户信息需访问平台的SYS_USER表。
1 修正数据库连接
打开 cas\WEB-INF\classes\application.properties
修正如下配置:
#数据库配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/yuncheng2021?characterEncoding=UTF-8&useUnicode=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghaispring.datasource.username=rootspring.datasource.password=rootspring.datasource.type=org.apache.commons.dbcp2.BasicDataSourcespring.jpa.database=mysqlspring.jpa.show-sql=truespring.jpa.hibernate.ddl-auto=updatespring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
2 启动cas
须要准备tomcat,把cas包放到tomcat/webapps目录下,在tomcat/bin目录下实行startup.bat(windows)或startup.sh(linux)。
启动成功后访问cas地址,界面如下图所示:
四、云程如何对接CAS平台后端CAS配置
云程平台后端已集成CAS代码,在yml配置文件中配置cas做事地址即可。
application.yml 进行如下配置:
#cas单点登录cas:prefixUrl: http://cas.example.org:8443/cas
平台前端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"