单点登录是非常核心的分布式系统,比如阿里等大型网站都会涉及到,下面我就全面来详解单点登录@mikechen
什么是单点登录
单点登录 ,英文全称是Single Sign-On, 简称是SSO,是一种身份验证和授权机制。
单点登录允许用户在一次登录后,可以访问多个相关但独立的系统或应用,而无需再次进行身份验证。
为什么需要单点登录
单点登录,用户只需一次登录,就能够访问多个系统,提高了用户体验。
举一个例子,阿里旗下有多个网站,比如:阿里云、飞猪、淘宝、天猫、聚划算等等。
如下图所示:
如果每个系统,用户都需要登录,不仅用户会疯掉,各子系统也会为这种重复认证授权,这样的用户体验就会非常差。
如果采用单点登录,用户就不需要反复登录,可以无缝地在这些服务之间切换而无需重复登录。
这不仅提高了用户体验,单点登录还可以提高安全性。
比如:通过集中管理和监控身份验证,可以更容易检测和防范潜在的安全威胁。
总之,单点登录提供了便利、效率、安全性和管理优势。
单点登录系统
单点登录系统里面,最典型的是CAS单点登录,CAS是Central Authentication Service的缩写。
CAS)的实现包括三个核心组件,它们分别是:CAS Server(CAS 服务器)、CAS Client(CAS 客户端)、和 Ticket。
用户通过CAS客户端访问应用程序,CAS客户端负责将用户重定向到CAS服务器进行身份验证。
如下图所示:
1.CAS 服务器
CAS 服务器是单点登录的核心,负责用户的身份验证、票据颁发、单点注销等任务。
主要工作:
- 验证用户身份。
- 颁发 Ticket-Granting Ticket(TGT) 和 Service Ticket(ST)。
- 管理和维护票据状态。
- 处理单点注销请求
2.CAS 客户端
CAS 客户端是集成在应用程序中的组件,负责将用户重定向到CAS服务器以进行身份验证,并处理CAS服务器返回的票据。
主要工作:
- 发起对 CAS 服务器的身份验证请求。
- 处理 CAS 服务器返回的 TGT 和 ST。
3.Ticket票据
TGT,全称是Ticket-Granting Ticket,TGT是用户在首次登录成功后由CAS服务器颁发的票据,用于获取其他服务访问权限的票据。
ST,全称是Service Ticket, ST是由CAS服务器颁发给CAS客户端,用于向CAS服务器请求实际的服务访问令牌。
这三个组件一起协同工作,形成CAS的单点登录体系。
单点登录实现原理
CAS单点登录的实现原理,如下图所示:
主要流程,大致如下:
1.用户登录
首先,用户访问CAS客户端的应用程序。
如果CAS客户端检测到用户未经身份验证,将用户重定向到CAS服务器的登录页面。
2.TGT颁发
用户在CAS服务器登录页面提供凭证,CAS服务器验证用户身份。
如果验证成功,CAS服务器颁发一个TGT(Ticket-Granting Ticket)给用户。
3.验证和颁发Service Ticket
CAS服务器验证用户的TGT,并颁发一个Service Ticket(ST)给CAS客户端。
ST,由CAS客户端用于向CAS服务器请求实际的服务访问令牌。
4.访问应用程序
CAS客户端使用ST向CAS服务器请求服务访问令牌,CAS服务器验证ST,并在验证成功后颁发服务访问令牌给CAS客户端。
这些组件共同协作,通过用户身份验证、票据的颁发和验证,实现了单点登录的流程。
单点登录应用场景
1.电子商务平台
例如,我最早提到的阿里旗下的:淘宝、天猫、支付宝等,用户在一次登录后,可以访问多个关联的电商平台。
这是目前使用单点登录比较多的场景,采用单点登录后,购物体验更好。
2.社交媒体
用户在一次登录后,可以无缝地切换访问多个社交媒体平台,简化用户在社交网络之间的互动。
3.企业内部系统
允许员工,通过一次登录访问企业内部的多个系统,如:邮箱、文件分享、人事管理系统等,提高员工工作效率。
4.游戏和娱乐平台
玩家可以通过一次登录访问游戏平台、在线娱乐服务等,提供更便捷的用户体验,减少重复登录的繁琐性。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》