Menu Close
Settings Close

Language and Page Formatting Options

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 地址和主机名之间的映射