Cas单点登录剖析

CAS简介

CAS(Central Authentication Service) 是 Yale 大学发起的构建 Web SSO 的 开源项目
SSO 是什么?
SSO-Single Sign On就是 单点登录 也就是 多个网站程序 统一到一个网址进行登录身份验证主要特点是:SSO 应用之间使用 Web 协议 (如HTTPS) ,并且只有一个登录入口。我们所讲的SSO,指 Web SSO 。
SSO 的体系中,有下面三种角色:
User(多个)Web应用(多个)SSO认证中心(一个)
所有的登录都在 SSO 认证中心进行。SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是通过认证的用户。SSO 认证中心和所有的 Web 应用建立一种信任关系。就是能达到 很多不同服务器的或者相同服务器的网站 统一到某个地方登录 如果你是使用同一个浏览器登录的 那么 在这个浏览器再打开其他的网站 这个网站 就不用再登录了

CAS 的结构体系

CAS Server
CAS Server 负责完成对用户信息的认证,需要单独部署,CAS Server 会处理用户名 / 密码等凭证 (Credentials) 。 就是 安装在服务器端的一个web程序 目前有耶鲁大学的 也有其它机构开发的,它是复制认证的服务器
CAS Client
CAS Client部署在应用程序中,当有对本地 Web 应用受保护资源的访问请求,并且需要对请求方进行身份认证,重定向到 CAS Server 进行认证。

术语解释

TGT:用来存储登入用户身份的的重要票据,一旦用户成功登入到CAS服务器后,CAS服务器就会生成一个TGT,并存储在CAS服务器端。最为重要的是确保TGT是全局唯一的
TGC:是一个存储TGT的Cookie。当登入到CAS服务器后,CAS会在浏览器中存储它,这样下次登入时传回CAS服务器进行登入验证,只有借助Https传输通道,TGC才会被传回CAS服务器
术语解释
SSO-Single Sign On,单点登录
TGT-Ticket Granting Ticket,用户身份认证凭证票据
ST-Service Ticket,服务许可凭证票据
TGC-Ticket Granting Cookie,存放用户身份认证凭证票据的cookie

Cas原理图

image.png
访问服务: SSO 客户端发送请求访问应用系统提供的服务资源。
重定向认证: SSO 客户端会重定向用户请求到 SSO 服务器。
用户认证:用户身份认证。
发放票据: SSO 服务器会产生一个随机的 Service Ticket 。
验证票据: SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。
传输用户信息: SSO 服务器验证票据通过后,传输用户认证结果信息给客户端。

Cas原理解析

image.png
已登录用户首次访问应用群中系统B时:
1)、浏览器访问另一应用B需登录受限资源,此时进行登录检查,发现未登录,然后进行获取票据操作,发现没有票据。
2)、系统B发现该请求需要登录,将请求重定向到认证中心,获取全局票据操作,获取全局票据,可以获得,认证中心发现已经登录。
3)、认证中心发放临时票据(令牌),并携带该令牌重定向系统B。
4)、此时再次进行登录检查,发现未登录,然后再次获取票据操作,此时可以获得票据(令牌),系统B与认证中心通信,验证令牌有效,证明用户已登录。
5)、系统B将受限资源返回给客户端。

CAS详细过程图解

image.png

许涛,Java后端研发,web端研发经验丰富,主要负责pc端和移动端的企业级业务处理系统定制化开发,如:综...

8 声望
4 粉丝
0 条评论
推荐阅读
ElasticSearch 必知必会 - 进阶篇
京东物流:康睿 姚再毅 李振 刘斌 王北永说明:以下全部均基于 ElasticSearch 8.1 版本一.跨集群检索 - ccr官网文档地址: [链接]跨集群检索的背景和意义跨集群检索定义跨集群检索环境搭建官网文档地址: [链接]...

京东云开发者2阅读 549

封面图
单点登录 SSO 的实现
🎈 什么是单点登录单点登录: SSO(Single Sign On) 用户只需登录一次,就可访问同一帐号平台下的多个应用系统。比如阿里巴巴这样的大集团,旗下有很多的服务系统,比如天猫,淘宝,1688等等,如果每个子系统都需...

tiny极客1阅读 506评论 1

封面图
Kubernetes使用KaiwuDB简介
容器是打包和运行应用程序的好方式。在生产环境中,我们需要管理运行应用程序的容器,并确保不会停机。如果一个容器发生故障,则需要启动另一个容器。如果系统处理此行为,会不会更便捷?这就是 Kubernetes(后文...

KaiwuDB阅读 887

封面图
Dapr助力异构语言系统的事件驱动架构设计
我们在探讨微服务时,通常避不开服务的颗粒度和服务之间的松耦合。也就是说服务应该是能够自治的,能够掌控服务所有的依赖,并且尽量降低同步通信的频率。今天我们来探讨一下实现分布式服务松耦合的事件驱动架构...

Mr_Black阅读 586

封面图
拜占庭将军问题和 Raft 共识算法讲解
在分布式系统中, 什么是拜占庭将军问题?产生的场景和解决方案是什么?什么是 Raft 共识算法?Raft 算法是如何解决拜占庭将军问题的?其核心原理和算法逻辑是什么?除了 Raft,还有哪些共识算法?共识问题作为分...

京东云开发者2阅读 245

封面图
分布式系统中亚稳定失败状态
这篇文章的初衷,是记录拜读由Nathan Bronson, Aleksey Charapko, Abutalib Aghayev, and Timothy Zhu共同发表的论文Metastable Failures in Distributed Systems的收获,这篇论文描述了一个在大规模分布式系统中...

Mr_Black阅读 485

封面图
IOMESH Installation
IOMESH Installation官方文档:Introduction · Documentation同步发表于个人网站:www.etaon.top实验拓扑图:也可以再测试的时候是使用一个端口,官方建议将IOMESH的端口分可,即下图10.234.1.0/24网段:实验使用...

Etaon阅读 455

封面图

许涛,Java后端研发,web端研发经验丰富,主要负责pc端和移动端的企业级业务处理系统定制化开发,如:综...

8 声望
4 粉丝
宣传栏