惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog
Y
Y Combinator Blog
博客园_首页
有赞技术团队
有赞技术团队
博客园 - Franky
腾讯CDC
G
Google Developers Blog
Recent Announcements
Recent Announcements
博客园 - 【当耐特】
D
Docker
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
H
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
V
V2EX
U
Unit 42
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学

祈雨的笔记

安全多方计算MPC spark原理解析 kueue执行源码分析 spark on k8s执行源码分析 spark-operator源码解析 系统压测遇到的缓存击穿问题 我的世界PC与安卓联机 蚂蚁金服流量投放平台的AIG改造 G1大对象致Old区占用率高 日志打印导致接口响应率下跌分析 Groovy加载类导致OOM分析 ERROR日志打印导致CPU满载 记OceanBase死锁超时 应用发版期间服务响应超时 Ark Serverless初探 系统优化复盘一二三 The user specified as a definer does not exist Kong网关初探 API网关选型调研 CPU火焰图常用工具 配置中心选型调研 root操作Nginx导致用户组错误 基于Proxifier使用代理 FastJSON字段智能匹配踩坑 Nacos初探 记一次Nginx服务器CPU满荷载故障 基于券系统分库分表的思考 limit不参与SQL成本计算致索引失效 Linux常用性能监控命令 golang低版本http2偶现400
CAS(1)原理
祈雨的笔记 · 2017-11-06 · via 祈雨的笔记

1、介绍

SSO单点登录是指在多个应用系统中,用户只需要登录一次即可访问相互信任的应用系统而不需要再次登录的服务。

2、原理图

3、过程

当有多个单点登录客户端如Cas Client A、Cas Client B,用户访问两个客户端时的过程如下:

  1. 用户访问Cas Client A,Cas Client A检查其未登录后,将用户重定向至Cas Server进行用户登录
  2. 用户登录成功后,Cas Server向浏览器写入名为CASTGC的包含用户信息的加密cookie。然后随机生成一次性的Ticket,保存到内部数据库后,携带Ticket重定向回Cas Client A
  3. Cas Client A获取到Ticket后,后台请求Cas Server验证Ticket。Cas Server通过内部数据库判断Ticket的有效性。验证通过后,Ticket作废,Cas Client A创建Session保存登录信息
  4. Cas Client A向用户返回请求内容
  5. 用户访问Cas Client B,Cas Client B先检查是否有保存登录信息的Session,发现没有对应Session后,寻找是否有Ticket。发现无Ticket后,重定向到CAS Server
  6. CAS Server寻找保存用户信息的cookie:CASTGC。根据cookie中保存的信息进行自动登录。Cas Server随机生成一次性的Ticket,保存到内部数据库后,携带Ticket重定向回Cas Client B
  7. Cas Client B获取到Ticket后,后台请求Cas Server验证Ticket。Cas Server通过内部数据库判断Ticket的有效性。验证通过后,Ticket作废,Cas Client B创建Session保存登录信息
  8. Cas Client B向用户返回请求内容
  9. 用户登出时,CAS server接受请求后,会检测用户的CASTGC Cookie,把对应的Session清除,同时会找到所有通过该CASTGC SSO登录的Cas Client的URL,并向各个Cas Client提交请求。所有收到请求的Cas Client把对应session删除