单点登录是非常核心的分布式系统,比如阿里等大型网站都会涉及到,下面我就全面来详解单点登录@mikechen
什么是SSO
SSO,全称是Single-Sign-On,翻译过来就是单点登录,是一种身份验证机制。
如下图所示:
采用SSO后,用户只需进行一次登录,即可访问多个系统,而无需在每个系统中都进行单独的登录。
为什么需要SSO
采用SSO单点登录后,用户只需记住一个凭据,即可访问多个系统,减少了用户需要记住多组用户名和密码的负担。
如下图所示:
登录一次后,阿里旗下的淘宝、天猫..等多个网站,就无需再登录了,因此,SSO简化了用户在多个系统间的操作流程。
此外,SSO系统通常实施更严格的身份验证和访问控制,比如:集中身份验证使得监控和管理用户,提高了系统的安全性。
所以,这些好处,极大的减少了重复登录所需的时间,也提升了用户的使用体验。
所以,以阿里、淘宝等为代表的大型网站,很多都会涉及到使用:SSO。
SSO单点登录系统
SSO的实现方式有很多,大部分的实现原理都类似,这里我以CAS为例,来讲解具体的SSO的实现。
CAS,全称是Central Authentication Service,翻译过来就是中央统一认证登录,是一个开源的单点登录实现。
CAS通过集中式的身份认证服务器来管理用户的登录状态,并允许用户使用单一的登录凭据。
比如:通过用户名、密码,来访问多个相关但独立的应用程序或服务。
如下图所示:
统一认证通过:集中管理用户的身份认证信息、和提供统一的登录界面,为用户提供了便捷、安全的登录体验。
认证内容,主要包含如下4点:
- 单一登录凭据: 用户只需要记住一个用户名和密码,即可访问多个相关的应用程序,无需在每个应用程序中单独登录。
- 集中管理认证信息: 用户的认证信息,如:用户名、密码等被集中管理在认证服务器中,保证了认证信息的一致性和安全性。
- 统一登录界面: 提供一个统一的登录界面或登录页面,用户可以通过该界面输入登录凭据进行认证,而不用为不同的应用程序输入不同的凭据。
- 会话管理: 统一认证系统负责管理用户的会话状态,包括:会话的创建、销毁和管理,以确保用户在登录后能够持续访问受保护的资源。
SSO实现原理
整体实现,如下图所示:
CAS,包含3大核心组件:
1.CAS Server(CAS服务器)
CAS服务器负责处理用户的认证请求,并颁发票据(Ticket)给客户端。
用户登录后,CAS服务器验证用户的身份,颁发一个票据给客户端。
2.CAS Client(CAS客户端)
CAS客户端是需要集成CAS认证的应用程序或服务提供者(Service Provider,SP)。
CAS客户端接收并验证CAS服务器返回的票据,然后建立用户会话。
3.Ticket(票据)
票据是CAS系统中用于表示认证成功的凭据。
CAS服务器颁发的票据可以是不同类型的,例如:Service Ticket(用于标识用户与特定服务之间的关联)和Proxy Ticket(用于代理认证)。
实现流程,包含如下5大流程:
1.请求重定向
用户访问需要认证的应用程序(Service Provider,SP)。
SP检测到用户未认证,将用户重定向到CAS服务器的登录页面。
2.用户认证
用户在CAS服务器的登录页面输入其凭据(通常是用户名和密码)进行认证。
CAS服务器验证用户的凭据的有效性。
3.票据颁发
认证成功后,CAS服务器生成并返回一个票据(Ticket)给SP。
票据可以是Service Ticket(ST)或Proxy Ticket(PT),具体取决于CAS服务器的配置和需求。
4.票据验证
SP接收到票据后,向CAS服务器发送验证票据的请求。
SP将票据一并发送给CAS服务器进行验证。
5.建立会话
CAS服务器验证票据的有效性。
如果票据有效,CAS服务器通知SP用户已经通过认证,SP建立用户会话,用户可以访问受保护的资源。
这五个流程共同构成了CAS单点登录的工作流程,用户只需要进行一次认证,通过票据交换实现了在多个相关系统间的单点登录。
SSO应用场景
使用最多就是,刚才我提到的:电子商务平台上,如下所示:
比如:淘宝、天猫..等,还有购物、支付系统、客户服务…,通过SSO技术,用户只需一次登录,即可在不同的子系统间无缝切换。
还有,就是云服务提供商,用户需要分别登录每个服务,通过SSO技术,用户只需一次登录,即可访问所有云服务。
总的来说,SSO技术可以在各种场景下提供便捷、安全的身份认证和访问管理服务,提高了用户体验和工作效率,降低了系统管理和维护成本。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》