专业的JAVA编程教程与资源

网站首页 > java教程 正文

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

temp10 2024-11-20 21:44:32 java教程 13 ℃ 0 评论

单点登录是非常核心的分布式系统,在大型应用、以及互联网大厂都会涉及到,下面我就全面来详解单点登录@mikechen

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

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

什么是单点登录

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

单点登录(SSO),允许用户使用一组凭据(例如:用户名和密码)登录到多个相关但相互独立的软件系统中,而不需要为每个系统单独进行登录。

为什么需要单点登录

用户只需记住一个帐户信息,即可访问多个系统,简化了用户的登录过程,提高了用户体验。

比如:阿里旗下的淘宝、天猫等多个网站采用了单点登录(SSO)的机制,这意味着一旦用户在其中一个网站上进行了登录,他们就可以无需重新输入凭据而访问其他阿里旗下的网站。

这种设计提供了便利性、和更好的用户体验,因为用户不需要为每个网站都记住不同的用户名、和密码。

除此之外,单点登录系统通常会实施更强的安全措施,比如:通过集中管理认证信息,可以降低密码泄露、和盗用的风险。

单点登录系统

单点登录实现,这里我以CAS单点登录为例,详解单点登录实现原理。

CAS(Central Authentication Service),包含三个核心组件:

1、CAS Server(CAS服务器)

CAS服务器负责认证用户的身份,验证其凭据(例如用户名和密码),并为通过验证的用户颁发票据(Ticket)。

CAS服务器通常还负责管理用户的会话状态,以及向客户端应用程序提供票据验证服务。

2、CAS Client(CAS客户端)

CAS客户端是需要集成CAS单点登录功能的应用程序。

它负责将用户重定向到CAS服务器以进行身份验证,接收CAS服务器返回的票据,并将其用于验证用户身份。

CAS客户端通常也负责管理用户的会话状态,并在需要时使用票据向CAS服务器进行验证。

3、Ticket(票据)

票据是CAS服务器颁发给客户端应用程序的令牌,表示用户已经通过了身份验证。

票据可以是不同类型的,包括Service Ticket(用于表示用户对特定服务的访问权限)和Proxy Ticket(用于代理认证)等。

客户端应用程序使用票据来向CAS服务器验证用户的身份,并获取用户的标识信息以及访问权限。

这三个组件共同构成了CAS单点登录系统,通过协同工作实现了用户在多个应用程序之间的单一身份认证和登录。

单点登录实现流程

整体流程,如下图所示:

主要分为如下6大步骤:

1、用户登录

用户访问客户端应用程序,并尝试进行登录。

客户端应用程序检测到用户未经身份验证,将用户重定向到 CAS 服务器的登录页面。

2、CAS登录页面

用户在 CAS 登录页面上输入其凭据(用户名和密码)。

CAS 服务器验证用户提供的凭据,如果验证成功,则为用户创建一个会话,并生成用于表示该会话的票据(Ticket)。

3、票据颁发

CAS 服务器将票据重定向回客户端应用程序,并附加到重定向 URL 中。

4、票据验证

客户端应用程序收到票据并将其发送回 CAS 服务器以进行验证。

5、票据验证

CAS 服务器验证票据的有效性。如果票据有效,则 CAS 服务器返回包含用户标识信息的成功响应。

客户端应用程序使用此用户标识信息来创建用户会话,并允许用户访问应用程序。

6、会话管理

客户端应用程序在本地管理用户会话,以便用户在应用程序中进行操作时保持登录状态。

会话通常会包含一些安全令牌,以便客户端应用程序在需要时重新验证用户身份。

这些流程共同协作,实现了用户在多个应用程序之间的单一身份认证、和登录。

单点登录应用场景

1.互联网电商场景

比如:我之前提到的阿里电商的应用场景,实现阿里一次登录,旗下的淘宝 天猫都可以访问。

2.企业内部系统

通过SSO,员工可以使用同一组凭据登录所有系统,如:文件共享、人力资源管理等。

3、云服务

许多云服务提供商支持SSO,企业可以通过SSO集中管理对云应用的访问权限,提高了安全性和管理效率。

4、移动应用

对于需要登录的移动应用,SSO可以提供更流畅的用户体验,减少用户需要记住的帐户信息数量。

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表