Windows Server 中的 Kerberos 身份验证概述

Kerberos 是一种身份验证协议,用于验证用户或主机的标识。 本主题包含有关 Windows Server 和 Windows 中 Kerberos 身份验证的信息。

Windows Server 操作系统可实现 Kerberos 版本 5 身份验证协议和对公钥身份验证的扩展,用于传输授权数据和委派。 Kerberos 身份验证客户端可作为安全支持提供程序 (SSP) 实现,并可以通过安全支持提供程序接口 (SSPI) 进行访问。 初始用户身份验证与 Winlogon 单个登录体系结构相集成。

Kerberos 密钥发行中心 (KDC) 与在域控制器上运行的其他 Windows Server 安全服务相集成。 KDC 使用域的 Active Directory 域服务数据库作为其安全帐户数据库。 Active Directory 域服务是域或林中的默认 Kerberos 实现所必需的。

Kerberos 认证的工作原理

Kerberos 认证涉及三方:代表安全主体的客户端、主体想要访问的服务,以及双方都信任的密钥分发中心(KDC)。 安全主体是一种身份,比如用户、计算机或服务,系统可以对其进行身份验证。 在 Windows Server 中,KDC 运行在每个域控制器上,并使用该域的 Active Directory 域服务 数据库作为账户数据库。

当用户登录时,Kerberos 客户端会联系 KDC,以证明用户的身份并获取票据授予票据(TGT)。 TGT 是一种凭证,允许客户端请求访问服务而无需再次向用户展示密码。 客户端将TGT存储在其工单缓存中,并重复使用直到工单过期。

要连接到某项服务,客户端会向 KDC 出示其 TGT,并请求该特定服务的服务票据。 KDC 返回一个服务票据,客户端将其直接出示给目标服务。 由于工单已包含服务验证客户端身份所需的信息,服务可以在每次连接时无需联系域控制器即可认证客户端。

Windows Server 实现了互联网工程任务组(IETF)定义的行业标准 Kerberos 版本 5 协议。 这一标准轨道基础使 Windows 实现能够与其他使用 Kerberos 的系统互操作。 在标准之上,Windows 增加了公钥认证、授权数据传输和委派的扩展。 Microsoft 在 Windows 协议规范 [MS-KILE]: Kerberos 协议扩展 中记录了这些 Windows 特有行为,该规范说明了 Windows 实现在哪些方面对标准进行了扩展或与标准存在差异。

实际的应用程序

以下各节介绍了使用 Kerberos 进行基于域的身份验证所带来的好处。

委托身份验证

Windows 操作系统上运行的服务在代表客户端访问资源时可模拟客户端计算机。 通常,服务通过访问本地计算机上的资源为客户端完成工作。 当客户端计算机向服务进行身份验证时,NTLM 和 Kerberos 协议都可以提供服务在本地模拟客户端计算机所需的授权信息。 但是,一些分布式应用程序被设计为,当前端服务连接到其他计算机上的后端服务时,必须使用该客户端计算机的身份。 Kerberos 身份验证支持一种委派机制,使服务在连接到其他服务时可以代表其客户端进行操作。

单一登录

在域或林环境中使用 Kerberos 身份验证,允许用户或服务访问管理员授权的资源,而无需多次请求凭据。 在通过 Winlogon 第一次登录域之后,Kerberos 将在每次尝试访问资源时管理整个林中的凭据。

Interoperability

Microsoft 对 Kerberos V5 协议的实现基于标准化规范,并已向互联网工程任务组(IETF)推荐。 因此,在 Windows 操作系统中,Kerberos 协议有助于实现与使用 Kerberos 协议进行身份验证的其他网络之间的互操作性。 此外,Microsoft 发布了有关实现 Kerberos 协议的 Windows 协议文档。 该文档包含 Microsoft 实现 Kerberos 协议的技术要求、限制、依赖项和特定于 Windows 的协议行为。

更高效地向服务器进行身份验证

在 Kerberos 出现之前,可以使用 NTLM 身份验证,它要求应用程序服务器必须连接到域控制器,以便验证每个客户端计算机或服务的身份。 有了 Kerberos 协议后,可续订的会话票证就取代了传递身份验证。 服务器不需要转到域控制器,除非它需要验证特权属性证书(PAC)。 服务器可以通过检查客户端出示的凭据来验证客户端计算机的身份。 客户端计算机在获得一次特定服务器的凭据后,即可在整个网络登录会话期间重复使用这些凭据。

相互身份验证

通过使用 Kerberos 协议,网络连接两端的每一方可验证另一方所宣称的身份。 NTLM 无法使客户端验证服务器的身份,或者使服务器之间相互验证身份。 NTLM 身份验证旨在用于服务器假定为真的网络环境。 Kerberos 协议不进行此假设。

加密类型

从 Windows Server 2025 开始,Kerberos 不再支持位于路径 REG_DWORD SupportedEncryptionTypes 的旧版注册表项 。 Microsoft建议改用组策略。 若要了解有关组策略设置的详细信息,请参阅 “网络安全:配置 Kerberos 允许的加密类型”。