CAS单点登录经常在大型网站被使用到,下面我就重点来详解CAS单点登录的原理机制与应用场景@mikechen
什么是单点登录
单点登录全称是Single Sign-On,简称 SSO,是一种身份验证和授权机制,允许用户在一次登录后,即可访问多个不同的应用程序或系统。
为什么需要单点登录
例如:阿里旗下有淘宝、天猫…等网站,用户一次操作或交易可能涉及到几十个子系统的协作。
如下图所示:
如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。
所以单点登录要解决的就是,用户只需要登录一次就可以访问所有相互信任的应用系统。
什么是CAS单点登录
CAS全称是Central Authentication Service,是一种单点登录的一种实现方式。
CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法。
CAS单点登录的实现原理
1.CAS的核心组件
CAS 的核心组件包括:CAS Server、CAS Client、Service三大组件。
如下图所示:
1.CAS Server
CAS 服务器负责用户的身份验证和授权,生成并管理令牌。
用户首次登录时,CAS 服务器会验证用户的凭据,生成一个令牌,并在成功登录后返回给应用。
2.CAS Client
CAS 客户端集成到应用程序中,用于将用户重定向到 CAS 服务器进行登录,并在登录成功后,向 CAS 服务器验证令牌。
3.Service
Service 表示受保护的应用,用户想要访问的资源。每个 Service 都有一个唯一的标识符。
2.CAS的实现原理
CAS 主要是提供一个中心化的身份验证服务,允许用户在一次登录后,然后通过生成令牌(Ticket)来访问多个关联的应用,无需为每个应用都重新输入用户名和密码。
如下图所示:
CAS 的工作原理如下:
- 用户访问应用 A: 用户首次访问应用 A,并尚未进行登录,应用 A 检测到用户未登录,将用户重定向到 CAS 服务器。
- 重定向到 CAS 服务器: 应用 A 将用户重定向到 CAS 服务器的登录页面。
- CAS 登录: 用户在 CAS 登录页面中输入用户名和密码,CAS 服务器验证凭据的有效性,如果成功,生成一个令牌(Ticket)。
- 返回令牌给应用 A: CAS 服务器将令牌返回给应用 A,应用 A 使用令牌向 CAS 服务器请求用户信息,以确认用户身份。
- 访问其他应用: 用户现在已经在应用 A 中登录,并拥有有效的令牌,当用户访问其他应用 B 时,应用 B 发现用户未登录,将用户重定向到 CAS 服务器。
- 返回令牌给应用 B: 用户无需再次输入凭据,CAS 服务器直接返回令牌给应用 B。
- 应用 B 向 CAS 服务器验证令牌: 应用 B 向 CAS 服务器发送令牌,以验证用户的登录状态,如果令牌有效,CAS 服务器将响应用户信息。
- 用户访问其他应用: 用户继续访问其他关联的应用,不需要再次登录,因为 CAS 服务器会验证令牌并提供用户信息。
CAS单点登录应用场景
以下是一些常见的 CAS 单点登录应用场景:
1.电子商务平台
对于拥有多个关联网站或子品牌的电子商务公司,CAS 单点登录可以为用户提供在不同站点之间的无缝购物体验。
2.大型企业内部门户
在大型企业中,有许多内部应用,如人力资源系统、财务系统、协作工具等。
CAS 单点登录可以让员工通过一次登录访问所有这些应用,无需为每个应用都输入密码。
3.教育机构门户
学校或大学通常有多个校园门户和在线学习平台,CAS 单点登录可以让学生、教职员工在一次登录后,访问这些不同的平台,提高用户体验。
4.金融服务
金融机构通常提供多个在线服务,如个人银行、投资管理、保险,CAS 单点登录可以方便客户在这些服务之间切换。
陈睿mikechen
十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》