单点登录是非常核心的分布式系统,比如阿里等大型网站都会涉及到,下面我就全面来详解单点登录@mikechen
什么是单点登录
单点登录 (Single Sign-On,简称SSO) 是一种身份验证机制,允许用户使用一组凭据(例如:用户名和密码)。
用户登录一次即可,就可以登录多个相关但独立的软件、系统或应用程序,而无需为每个系统重新登录。
为什么需要单点登录
SSO简化了用户的登录体验,避免了在每个系统中重复输入登录凭据的麻烦,提高了用户的满意度。
如下图所示:
阿里旗下有多个网站,比如:淘宝、天猫、聚划算…等等, 用户只需要登录一次,别的都无需重复登录。
单点登录,简化了用户在多个系统中的操作流程,节省了时间和精力,提高了生产力,也极大的提升了用户体验。
所以,很多大型网站,涉及到多个系统的场景,都会应用到单点登录。
单点登录系统
单点登录系统,经典都有CAS,全称是Central Authentication Service,是是由耶鲁大学开发的单点登录系统。
CAS通过票据交换的方式实现单点登录,支持多种编程语言和平台、CAS可以轻松地集成到现有的身份管理系统中。
CAS(Central Authentication Service)的实现确实包括三个核心组件:
如下图所示:
1.CAS Server(CAS 服务器)
CAS服务器,负责处理用户的认证请求,并颁发票据(Ticket)给客户端,它验证用户的身份凭据(通常是用户名和密码),创建和管理会话,并负责处理票据的生成和验证。
2.CAS Client(CAS 客户端)
CAS客户端,是需要集成CAS认证的应用程序或服务提供者(Service Provider,SP)。
CAS客户端负责将用户重定向到CAS服务器以进行认证,接收和验证CAS服务器返回的票据,并基于票据创建或维护用户的会话。
3.Ticket(票据)
票据是CAS系统中用于表示认证成功的凭据,CAS服务器颁发的票据可以是不同类型的,例如:Service Ticket(用于标识用户与特定服务之间的关联)和Proxy Ticket(用于代理认证)。
票据是CAS单点登录的核心机制之一,用于实现用户的身份认证和会话管理。
单点登录实现原理
CAS单点登录的实现,主要通过票据的交换和验证,CAS实现了用户在多个服务之间的单点登录。
如下图所示:
主要流程,大致如下:
1.认证过程:
- 用户访问应用程序,并尚未登录。
- 应用程序将用户重定向到CAS服务器。
- CAS服务器要求用户提供身份验证凭据(如:用户名和密码)。
- 用户提供凭据后,CAS服务器验证凭据的有效性。
- 如果验证成功,CAS服务器会创建一个票据(Ticket),并将其发送回应用程序。
- 应用程序使用票据去CAS服务器验证票据的有效性。
2.票据交换过程:
- 应用程序收到票据后,向CAS服务器发送请求以验证票据。
- CAS服务器验证票据,并返回给应用程序一个成功或失败的响应。
- 如果验证成功,应用程序允许用户访问受保护的资源。
3.会话建立:
- 如果票据验证成功,SP将创建一个本地会话并将用户标识为已认证状态,从而使用户可以访问受保护的资源。
- 用户在该会话中可以自由访问应用程序的其他受保护资源,而无需再次进行认证。
单点登录应用场景
1.电商平台
在电子商务平台上,用户可能需要访问多个子系统,例如:阿里的天猫、淘宝、支付系统、客户服务…等。
2.企业内部
以及,在企业内部,员工可能需要访问多个系统,例如电子邮件、文档管理系统、人力资源系统等。
允许员工,通过一次登录访问企业内部的多个系统,如:邮箱、文件分享、人事管理系统等,提高员工工作效率。
3.云服务
以及,在使用云服务提供商提供的多个服务时,可以使用单点登录,实现统一的身份认证,简化用户的登录体验。
总之,使用单点登录,可以极大的简化的登录流程,提高工作效率,极大的提升用户体验。
作者简介
陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!

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