单点登录最全详解(图文全面总结)

单点登录最全详解(图文全面总结)-mikechen

单点登录是非常核心的分布式系统,比如阿里等大型网站都会涉及到,下面我就全面来详解单点登录@mikechen

什么是单点登录

单点登录 ,英文全称是Single Sign-On, 简称是SSO,是一种身份验证和授权机制。

单点登录最全详解(图文全面总结)-mikechen

单点登录允许用户在一次登录后,可以访问多个相关但独立的系统或应用,而无需再次进行身份验证。

 

为什么需要单点登录

单点登录,用户只需一次登录,就能够访问多个系统,提高了用户体验。

举一个例子,阿里旗下有多个网站,比如:阿里云、飞猪、淘宝、天猫、聚划算等等。

如下图所示:

单点登录最全详解(图文全面总结)-mikechen

如果每个系统,用户都需要登录,不仅用户会疯掉,各子系统也会为这种重复认证授权,这样的用户体验就会非常差。

如果采用单点登录,用户就不需要反复登录,可以无缝地在这些服务之间切换而无需重复登录。

这不仅提高了用户体验,单点登录还可以提高安全性。

比如:通过集中管理和监控身份验证,可以更容易检测和防范潜在的安全威胁。

总之,单点登录提供了便利、效率、安全性和管理优势。

 

单点登录系统

单点登录系统里面,最典型的是CAS单点登录,CAS是Central Authentication Service的缩写。

CAS)的实现包括三个核心组件,它们分别是:CAS Server(CAS 服务器)、CAS Client(CAS 客户端)、和 Ticket。

用户通过CAS客户端访问应用程序,CAS客户端负责将用户重定向到CAS服务器进行身份验证。

如下图所示:
单点登录最全详解(图文全面总结)-mikechen

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单点登录的实现原理,如下图所示:

单点登录最全详解(图文全面总结)-mikechen

主要流程,大致如下:

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面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法