SSO单点登录

简单写个SSO单点登录吧

什么是SSO单点登录

单点登录(Single Sign-On,简称SSO)是一种身份验证和授权过程,它允许用户使用一组凭据(如用户名和密码)登录一次,然后无需再次输入凭据即可访问关联的多个系统或应用程序。SSO 的主要目的是提高用户体验,同时加强安全性和简化访问管理。

  • 认证(Authentication)即确认该用户的身份是他所声明的那个人;
  • 授权(Authorization)即根据用户身份授予他访问特定资源的权限。

工作原理

1. 初次登录 

用户尝试访问受 SSO 保护的应用程序列表中的任何一个。在初次登录时,用户会被引导至一个中央认证服务器,在这里输入用户名和密码。

2. 认证

中央认证服务器验证用户的凭据。一旦验证成功,服务器会创建一个认证令牌(如 SAML 令牌、OpenID Connect ID Token 或 JWT)。

3. 令牌存储

认证令牌会被存储在一个持久的会话存储系统中,如浏览器 Cookie 或服务器的会话数据库。

4. 无缝访问

用户随后尝试访问列表中的其他应用时,SSO 系统会检查之前存储的认证令牌。如果令牌有效,用户无需再次登录即可直接访问应用程序。

5. 令牌更新

为了保持会话的活跃状态,SSO 系统会在适当的时候更新令牌,通常是在用户与系统的交互中。

6. 单点注销

SSO 还支持单点注销(Single Sign-Out,简称 SSO),用户可以从一个应用程序中注销,同时注销所有其他关联应用程序的会话。

优势

  • 提高用户体验:用户只需要记住一组凭据,减少了重复登录的麻烦。
  • 增强安全性:通过减少凭据输入的次数,可以降低密码被窃取的风险。
  • 简化管理:管理员可以在一个中心位置管理用户的访问权限,而不需要在每个应用程序中单独设置。
  • 降低支持成本:用户忘记密码的情况减少,从而减少了 IT 支持的工作量。

挑战

  • 单点故障:如果中央认证服务器出现故障,可能会影响到所有关联应用程序的访问。
  • 复杂性:实施 SSO 需要在多个应用程序和服务之间进行协调,可能需要额外的开发和维护工作。
  • 隐私考虑:用户可能对在多个服务之间共享登录信息持保留态度。

实现方式

  • 基于 Cookie:大多数现代浏览器支持 HTTP 状态管理,可以使用 Cookie 来实现 SSO。
  • 基于令牌:使用 SAML、OpenID Connect 等标准协议,通过令牌来在不同的应用程序和服务之间传递认证信息。
  • OAuth/OpenID Connect:这些协议特别适用于 Web 应用和服务之间的 SSO,允许第三方应用在用户授权的情况下访问用户资源。

核心组件和概念

单点登录(SSO)的实现涉及多个核心组件和概念,这些组件协同工作以确保用户能够无缝地在多个应用程序和服务之间进行身份验证和授权。以下是 SSO 的一些关键组件和概念:

1. 身份提供者(Identity Provider,IdP)

身份提供者是负责验证用户身份的系统。用户首先向 IdP 提供凭据(如用户名和密码),IdP验证这些凭据后,会生成一个认证令牌。在 SSO 环境中,通常有一个或多个 IdP,用户可以在这些 IdP 中进行登录。

2. 服务提供者(Service Provider,SP)

服务提供者是需要用户提供身份信息以供访问的应用程序或服务。在 SSO 中,SP 信任 IdP 提供的认证信息,并允许用户访问其资源。

3. 认证令牌(Authentication Token)

一旦用户通过 IdP 验证,IdP 会生成一个认证令牌,如 SAML 断言、OpenID Connect ID Token 或 OAuth 访问令牌。这个令牌包含了用户的身份信息,SP 使用它来验证用户的身份。

4. 会话管理

会话管理涉及到创建、维护和终止用户会话的过程。在 SSO 中,会话通常通过持久化令牌(如 Cookie)在用户浏览器和 IdP 或 SP 之间进行管理。

5. 联合认证(Federated Authentication)

联合认证是一种认证方法,允许用户使用一个 IdP 的凭据来访问多个 SP 的资源。这通常涉及到跨域或跨组织的信任关系。

6. 单点注销(Single Sign-Out,SSO)

单点注销允许用户从所有通过 SSO 连接的服务中注销。当用户在一个服务中注销时,SSO 系统会通知所有其他相关服务,以便它们也终止用户的会话。

7. 用户界面(User Interface,UI)

用户界面是用户与 SSO 系统交互的平台,例如登录页面、注销按钮和用户权限管理界面。

8. 属性解析器(Attribute Resolver)

属性解析器用于从认证令牌中提取用户属性(如姓名、电子邮件地址等),并将这些属性传递给 SP,以便进行用户个性化和权限分配。

9. 安全断言标记语言(Security Assertion Markup Language,SAML)

SAML 是一种基于 XML 的标准协议,用于在 IdP 和 SP 之间交换用户认证和授权数据。

10. OAuth/OpenID Connect

OAuth 2.0 和 OpenID Connect 是基于 HTTP 的认证和授权框架,它们定义了 IdP 和 SP 之间如何安全地传递用户信息。

11. 信任框架(Trust Framework)

信任框架是一组规则和协议,定义了 IdP 和 SP 之间的信任关系,以及如何在它们之间安全地共享用户身份信息。

这些组件和概念共同构成了 SSO 的基础设施,使得用户能够在多个应用程序和服务之间实现无缝的登录体验,同时确保安全性和效率。

技术架构

在这个架构中,用户首先通过 SSO 客户端请求访问受保护的资源。SSO 客户端将用户重新定向到 SSO 服务提供者,用户在那里输入凭据并进行身份验证。一旦用户通过验证,SSO 服务提供者会创建一个认证令牌,并将该令牌存储在令牌存储系统中。

随后,当用户尝试访问其他受保护的资源时,SSO 客户端会携带之前的认证令牌进行请求。服务提供者会验证这个令牌,如果验证成功,用户就可以访问资源。

主流协议

CAS、OAuth、OpenID Connect、SAML

累了

  • 35
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值