在将新的 SPN 添加到 Kerberos 域时,您可以选择将 SPN 映射到用户。通常,我通过集成 Windows 身份验证加入域,这会为服务创建一个新的计算机帐户,但现在,我想尝试在没有 IWA 的情况下使用 Kerberos。
我相信我已经彻底了解了 Kerberos 如何对计算机主机的客户端进行身份验证(对于我想做的事情来说已经足够好了) - 但是将 SPN 映射到域用户究竟有什么作用?
编辑:我并不是在问 SPN 的一般工作原理。我具体问的是将 SPN 映射到域用户的详细信息。
回答:
- Kerberos 将允许该特定用户托管此服务 - 而不是使用计算机主机帐户进行身份验证,服务器将加入此特定用户下的 Kerberos 域。身份验证通过此用户进行。
如能提供进一步信息我们将非常感激。
答案1
AD 用户帐户将拥有服务主体名称仅用于运行服务。因此,大多数 AD 用户帐户不会有任何服务主体名称。AD 用户帐户具有 SPN 的最常见示例是,如果该用户帐户用作服务帐户来运行 MS SQL、IIS 等。如果使用 AD 用户帐户来操作服务,但未在 AD 中注册 SPN,则该服务无法使用 Kerberos。
相比之下,AD 用户帐户将始终拥有用户校长姓名。
服务主体名称与服务在其安全上下文中执行的安全主体(用户或组)相关联。SPN 用于支持客户端应用程序和服务之间的相互身份验证。SPN 由客户端了解的有关服务的信息组成。或者,它可以从受信任的第三方(例如 Active Directory)获取信息。服务主体名称与帐户相关联,并且帐户可以有多个服务主体名称。
答案2
你应该阅读 MSDN 文档如果您甚至不确定 SPN 解决了哪些问题。它是彻底而完整的。
答案3
为了填补一些空白,如果您的服务需要在.domain 用户帐户的上下文中运行,那么该用户帐户需要具有 SPN。
这种情况通常出现在 IIS 应用程序池中。如果您在负载平衡器后面为某个应用程序设置了多个 IIS 服务器,则您可能没有将 SPN 分配给特定服务器,而是分配给域用户帐户,并且 IIS 应用程序池在该帐户的上下文中运行。如果您想使用“委托”级别令牌模拟经过身份验证的用户并访问远程计算机上的另一个服务,则尤其如此。
如何获取经过身份验证的用户令牌并不一定重要。它可以是集成身份验证令牌,也可以是使用用户提供的凭据构建的令牌,例如使用表单身份验证。如果使用约束委派,您可以在没有现有身份验证令牌或密码的情况下模拟用户,您所需要的只是用户名。
但要使其中任何一个发挥作用,始终都需要 SPN。