1.6. 单点登录


单点登录(SSO)允许一个资源验证主体隐式授权对其他资源的访问权限。如果 SSO 对一组不同资源进行保护,则用户只需要在第一次访问任何受保护的资源时进行身份验证。身份验证成功后,与用户关联的角色将存储并用于授权所有其他相关资源。这允许用户访问任何其他授权资源,而无需重新进行身份验证。

如果用户注销资源或资源以编程方式使会话无效,则移除所有持久的授权数据并重新开始进程。在资源会话超时的情况下,如果存在与该用户关联的其他有效资源会话,SSO 会话不会失效。SSO 可用于 Web 应用和桌面应用的身份验证和授权。在某些情况下,SSO 实施可以与这两者集成。

SSO 中有几个常用的术语,用于描述系统的不同概念和部分。

Identity Management

身份管理(IDM)是指在一个或多个系统或域中管理主体及其关联的身份验证、授权和特权的理念。术语身份和访问管理(IAM)有时用于描述同一概念。

身份供应商

身份提供商(IDP)是负责验证最终用户并以可信方式向受信任的合作伙伴断言该用户的身份的权威实体。

Identity Store

身份提供商需要身份存储来检索用户在身份验证和授权过程中要使用的信息。身份存储可以是任何类型的存储库:数据库、轻量级目录访问协议(LDAP)、属性文件等。

服务提供商

服务提供商(SP)依靠身份提供程序通过电子用户凭证来断言用户的信息,让服务提供商根据一组受信任的用户凭据断言来管理访问控制和控制。

集群和非集群的 SSO

非集群 SSO 限制在同一虚拟主机上为应用共享授权信息。在主机发生故障时,也没有弹性。在集群的 SSO 场景中,可以在多个虚拟主机上的应用之间共享数据,使它具有应对故障的弹性。此外,集群 SSO 能够接收来自负载平衡器的请求。

1.6.1. 第三方 SSO 实施

Kerberos

Kerberos 是客户端-服务器应用的网络身份验证协议。它使用密钥对称加密,以允许在非安全网络中进行安全身份验证。

Kerberos 使用名为 ticket 的安全令牌。要使用安全服务,用户需要从问题单授予服务(TGS)获取票据,这是在其网络的服务器上运行的服务。在获取票据后,用户从身份验证服务(AS)请求一个 Service Ticket(ST),这是在同一网络中运行的另一个服务。然后,用户使用 ST 向所需的服务进行身份验证。TGS 和 AS 在名为密钥分发中心(KDC)的封闭服务中运行。

Kerberos 设计为在客户端-服务器桌面环境中使用,通常不用于 Web 应用程序或瘦客户端环境。但是,许多组织使用 Kerberos 系统进行桌面身份验证,更喜欢重新使用现有系统,而不是为其 Web 应用程序创建第二个系统。Kerberos 是 Microsoft Active Directory 的完整组成部分,用于许多红帽企业 Linux 环境中。

SPNEGO

简单且受保护的 GSS_API 协商机制(SPNEGO)提供了一种机制,可用于扩展基于 Kerberos 的 SSO 环境,供 Web 应用使用。

当客户端计算机上的应用(如 Web 浏览器)尝试访问 Web 服务器上的受保护页面时,服务器需要响应该授权。然后,应用程序从 KDC 请求 ST。应用程序以格式化为 SPNEGO 的请求打包票据,并通过浏览器将其发回到 Web 应用程序。运行部署的 Web 应用的 Web 容器解压缩请求并验证票据。访问权限是在成功通过身份验证后授予的。

SPNEGO 与所有类型的 Kerberos 提供商合作,包括红帽企业 Linux 中的 Kerberos 服务和 Kerberos 服务器(这是 Microsoft Active Directory 的完整组成部分)。

Microsoft 的 Active Directory

Active Directory(AD)是由 Microsoft 开发的目录服务,用于验证 Microsoft Windows 域中的用户和计算机。它作为 Windows Server 的一部分提供。运行 Windows Server 控制域的计算机称为域控制器。红帽企业 Linux 可与 Active Directory 域集成,支持红帽身份管理、红帽 JBoss 企业应用平台和其他红帽产品。

Active Directory 依赖于三个可协同工作的核心技术:

  1. LDAP 以存储有关用户、计算机、密码和其他资源的信息
  2. Kerberos,通过网络提供安全身份验证
  3. 域名服务(DNS),用于提供网络计算机和其他设备的 IP 地址和主机名之间的映射

1.6.2. 基于声明的身份

实施 SSO 的一种方法是使用基于声明的身份系统。基于声明的身份系统允许系统传递身份信息,但是将该信息提取为两个组件:一个声明以及签发者或授权。声明是指一个主题(如用户、组、应用程序或组织)对另一个主题所做的声明。该声明或声明集合打包到令牌或一组令牌中,并由提供程序发布。基于声明的身份允许单个安全资源实施 SSO,而不必了解关于用户的一切内容。

安全令牌服务

安全令牌服务(STS)是一种身份验证服务,向客户端发布安全令牌,以便在验证和授权安全应用、Web 服务或 Jakarta 企业 Bean 的用户时使用。试图对使用 STS(称为服务提供商)保护的应用进行身份验证的客户端将被重定向到集中式 STS 验证器并发布令牌。如果成功,该客户端将重新尝试访问服务提供商,并提供其令牌和原始请求。该服务提供商将通过 STS 验证客户端的令牌,并相应地进行操作。客户端可以针对其他 Web 服务或连接到 STS 的 Jakarta Enterprise Beans 重复使用此令牌。集中式 STS 的概念称为 WS-Trust,它可发布、取消、续订和验证安全令牌,并且指定安全令牌请求和响应消息的格式。

基于浏览器的 SSO

在基于浏览器的 SSO 中,一个或多个 Web 应用(称为服务提供商)在 hub 和 spoke 架构中连接到集中式身份提供程序。IDP 通过向服务提供商或 spoke 在 SAML 令牌中发布声明声明,充当身份和角色信息的中央来源或 hub。用户尝试访问服务提供商或用户尝试直接与身份提供程序进行身份验证时,可能会发出请求。它们分别称为 SP 启动和 IDP 启动的流,并且都将发布相同的申索声明。

SAML

安全断言标记语言(SAML)是一种数据格式,允许双方(通常是身份提供商和服务提供商)交换身份验证和授权信息。SAML 令牌是由 STS 或 IDP 发布的令牌类型;可用于启用 SSO。SAML、SAML 服务提供商保护的资源将用户重定向到 SAML 身份提供程序(一种 STS 或 IDP 类型),以在验证和授权该用户之前获取有效的 SAML 令牌。

基于桌面的 SSO

基于桌面的 SSO 使服务提供商和桌面域(如 Active Directory 或 Kerberos)能够共享一个主体。在实践中,这允许用户使用其域凭据登录其计算机,然后让服务提供商在身份验证期间重用该主体,而无需重新进行身份验证,从而提供 SSO。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat