文章目录
一什么是单点登录(sso)
用户一次登录可以访问所有互相信任的应用系统
传统的session无法在系统分别部署到不同的服务器中使用
二什么是CAS
是实现SSO单点登录的框架
点击进入CAS官网:
特点
- 开源企业级单点登录解决方案
- CAS Service(CAS服务端): 是需要独立部署的Web应用
- CAS Client(CAS客户端): 支持非常多的客户端(java,PHP…)
三CAS Server
前置准备 jdk,tomcat的安装和环境变量的配置
3.1下载与部署cas的war包
链接:https://pan.baidu.com/s/1VZcNEpNmFIhVAl6zPSbA-w
提取码:6nzn
下载cas.war后将其放入到tomcat的安装目录中的 apache-tomcat-8.5.72\webapps文件夹下:
**
3.2启动tomcat查看cas Server是否安装成功
进入tomcat的安装目录中bin文件夹下
Windows系统双击 startup.bat

自动弹出黑窗口:

第一次加载有的小伙伴可能加载的慢一些,
注意不要对黑窗口 敲击回车 否则会暂停窗口
出现READY表示加载完成

浏览器输入 http://localhost:8080/cas/login

回到tomcat的安装目录我们会发现webapps文件夹下多了个cas文件夹

进入tomcat的安装目录中webapps\cas\WEB-INF\classes
打开application.properties文件

在最后一行找到我们需要的用户名和密码
用户名 casuser
密码 Mellon

回到浏览器输入后登陆成功!

3.3CAS Server其它功能演示
在tomcat的安装目录中webapps\cas\WEB-INF\classes\webflow中有login和logout文件夹

我们大胆猜测
logout文件夹是管理登出功能的
浏览器输入 http://localhost:8080/cas/logout

回过头来看webapps\cas\WEB-INF\classes\application.properties文件

四CAS 客户端
点击下载我的源码
https://gitee.com/zhang-zhiwei233/SpringBoot2_SpringSecurity_CAS
这里是
SpringBoot2+SpringSecurity+CAS 安全认证整合项目
启动后访问http://localhost:7200/
发现浏览器自动跳转到
http://127.0.0.1:8080/cas/login?service=http%3A%2F%2Flocalhost%3A7200%2Flogin
但是报了个错误

解决方法:
在tomcat的安装目录中cas\WEB-INF\classes\application.properties添加如下
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
重启CAS服务端和客户端
发现报出如下错误

解决方法
cas服务4后服务端默认是https协议的配置文件,而我们浏览器是http的需要修改它
路径cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json
{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
// "serviceId" : "^(https|imaps)://.*",
"serviceId" : "^(https|http|imaps)://.*",
"name" : "HTTPS and IMAPS",
"id" : 10000001,
"description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
"evaluationOrder" : 10000
}
重启CAS服务端和客户端

输入用户名密码
用户名 casuser
密码 Mellon

登出http://localhost:7200/logout

登出后输入http://localhost:7200/hello
发现自动跳转到登录页面

五CAS 认证流程
在开始前先了解几个名词
user用户
Browser浏览器
CAS Server 服务器
Protected App 应用1
Protected App 应用2
TGC 存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,是CAS Server用来明确用户身份的凭证。TGT封装了TGC值以及此Cookie值对应的用户信息.
TGT:TGT对象的ID就是TGC的值,在服务器端,通过TGC查询TGT。
ST:service ticket,CAS为用户签发的访问某一service的票据,ST是TGT签发的。
全局会话:未完
局部会话: 未完

解释一下这张官网流程图
- 用户通过浏览器访问应用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 上校验,获取用户的登录信息
六登出
七与token的区别
CAS Server需要存储TGC
而 Token不存储在服务端
2.Token支持跨域单点登录
未完待续
本文详细介绍了CAS(Central Authentication Service)单点登录系统的部署、配置及其实现流程。从下载CAS Server的war包,到在Tomcat中部署并验证安装,再到配置CAS客户端,展示了SSO登录、登出功能。此外,文章还探讨了CAS与Token的区别,以及CAS认证流程的关键步骤,包括TGT和ST的角色。读者将深入理解CAS在企业级单点登录解决方案中的应用。

468

被折叠的 条评论
为什么被折叠?



