网站首页 > java教程 正文
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原理图
访问服务:SSO 客户端发送请求访问应用系统提供的服务资源。
重定向认证:SSO 客户端会重定向用户请求到 SSO 服务器。
用户认证:用户身份认证。
发放票据:SSO 服务器会产生一个随机的 Service Ticket 。
验证票据:SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。
传输用户信息:SSO 服务器验证票据通过后,传输用户认证结果信息给客户端。
Cas原理解析
已登录用户首次访问应用群中系统B时:
1)、浏览器访问另一应用B需登录受限资源,此时进行登录检查,发现未登录,然后进行获取票据操作,发现没有票据。
2)、系统B发现该请求需要登录,将请求重定向到认证中心,获取全局票据操作,获取全局票据,可以获得,认证中心发现已经登录。
3)、认证中心发放临时票据(令牌),并携带该令牌重定向系统B。
4)、此时再次进行登录检查,发现未登录,然后再次获取票据操作,此时可以获得票据(令牌),系统B与认证中心通信,验证令牌有效,证明用户已登录。
5)、系统B将受限资源返回给客户端。
CAS详细过程图解
希望可以对大家有帮助,喜欢的小伙伴可以帮忙转发+关注,感谢大家!
原文链接:https://www.tuicool.com/articles/QjieEf2
- 上一篇: 单点登录是什么?三种情况的实现方式
- 下一篇: GToken替换JWT实现SSO单点登录
猜你喜欢
- 2024-11-20 后端开发之多应用之间单点登录
- 2024-11-20 单点登陆常用的方式Oauth认证登录
- 2024-11-20 Python Web:如何通过JWT实现单点登录?
- 2024-11-20 4000字长文,带你了解单点登录
- 2024-11-20 SSO单点登录(三种实现方式)
- 2024-11-20 一次登录、便捷访问所有?聊聊CAS单点登录是如何实现的
- 2024-11-20 SpringBoot集成xxl-sso实现单点登录
- 2024-11-20 连环画解析“单点登录”原理,保证你能看懂
- 2024-11-20 CAS 单点登录简介
- 2024-11-20 springboot 集成cas5.3 实现sso单点登录
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)