CAS单点登录经常在大型网站被使用到,下面我就重点来详解CAS单点登录的原理机制与应用场景@mikechen
CAS单点登录
CAS,全称是Central Authentication Service,是一种基于令牌的身份认证单点登录系统。
CAS是通过将用户的登录状态、和身份信息保存在一个中心化的认证服务器中,使用户只需要在其中一个应用中进行登录。
然后就可以访问与该认证服务器关联的其他应用,而无需重新输入凭证。
CAS单点登录价值
CAS单点登录,可以极大的提升用户体验。
比如:阿里有多个系统,淘宝、天猫、聚划算, 用户只需登录一次,即可在整个系统中访问,减少了频繁登录的麻烦,提高了用户体验。
如下图所示:
在阿里巴巴这样拥有多个子系统或产品的大型企业中,用户只需要登录一次即可,这样就更加高效了。
CAS单点登录实现
CAS单点实现,如下图所示:
1. CAS Server(CAS 服务器)
职责: 负责用户的身份验证和授权,管理用户的会话,并生成并管理令牌。
工作流程:
- 用户首次登录: 用户在某一个CAS受保护的应用中首次尝试登录。
- CAS服务器验证凭证: CAS服务器验证用户提供的凭证,通常是用户名和密码。
- 生成令牌和TGT: 验证成功后,CAS服务器为用户生成一个令牌,包含用户身份信息,并返回给CAS客户端。同时,CAS服务器生成一个TGT(Ticket Granting Ticket),作为用户会话的全局凭证。
- 返回令牌: CAS服务器将令牌返回给CAS客户端,使用户成为已登录状态。
2. CAS Client(CAS 客户端)
职责: 集成到应用程序中,处理用户的登录和CAS服务器的通信。
工作流程:
- 检查用户登录状态: 当用户尝试访问一个CAS受保护的应用时,CAS客户端检查用户是否已经登录。
- CAS重定向: 如果用户未登录,CAS客户端将用户重定向到CAS服务器以进行身份验证。
- 用户在CAS登录: 用户在CAS服务器上成功登录,CAS服务器返回一个令牌(ST)给CAS客户端。
- 使用ST进行验证: CAS客户端使用这个ST与CAS服务器进行验证。
- 获取TGT: 验证成功后,CAS客户端获取用户的TGT(Ticket Granting Ticket),用于后续的服务访问。
3. Service(受保护的应用)
职责: 表示用户想要访问的资源,每个Service都有一个唯一的标识符。
工作流程:
- 用户尝试访问Service: 用户通过CAS客户端尝试访问某个Service。
- CAS客户端获取ST: CAS客户端获取用户的ST,并将其与Service标识一起发送给CAS服务器。
- CAS服务器验证ST: CAS服务器接收到ST后,验证其有效性,并检查用户是否有权访问该Service。
- 授权用户访问: 如果验证成功,CAS服务器授予用户访问Service的权限,用户可以成功访问该Service。
这三个组件共同构成了SSO单点登录系统,通过这个系统,用户可以在多个应用之间实现一次登录,即可访问受保护的资源。
CAS单点登录的应用场景
1.电商平台
电商平台通常包含多个服务,如购物、支付、物流跟踪等,CAS单点登录可以简化用户在这些服务之间的切换。
2.企业内部
在企业内部,存在各种内部系统,如人事管理、文件共享、邮箱等。
CAS单点登录可以让员工通过一次登录,访问这些系统,提高工作效率。
3.在线系统
在在线服务平台,用户可能使用多个子服务,如:购物、社交、新闻等,CAS单点登录为用户提供了一次登录,全平台访问的便利性。
4.云服务
云服务提供商可以使用CAS单点登录,使用户只需在云平台上进行一次登录,即可管理和访问各种云服务。
作者简介
陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!

后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》