有人可以不太简单地解释一下 Windows 服务主体名称 (SPN) 吗?

有人可以不太简单地解释一下 Windows 服务主体名称 (SPN) 吗?

我已经多次纠结于服务原则的名称,微软的解释还不够。我正在配置一个 IIS 应用程序以在我们的域上运行,看起来我的一些问题与我需要配置有关Windows 服务帐户上的 http 特定 SPN正在运行托管我的网站的应用程序池。

所有这些让我意识到我只是没有完全了解服务类型(MSSQL、http、host、termsrv、wsman 等)、Kerberos 身份验证、活动目录计算机帐户(PCName$)、Windows 服务帐户、SPN 和我用来尝试访问服务的用户帐户之间的关系。

有人可以不太简单地解释一下 Windows 服务主体名称 (SPN) 吗?

如果具有创造性的类比能够引起具有中等经验的系统管理员/开发人员的共鸣,则可以获得加分。

答案1

A服务主体名称是来自 的概念Kerberos。它是身份验证域内特定主机提供的特定服务的标识符。SPN 的常见形式是service class/ fqdn@ REALM(例如)。还有IMAP/[email protected]用户主体名称user@ REALM(或user1/ user2@形式)标识用户,REALM用于标识代言关系)。可以service class大致认为是服务的协议。Windows 内置的服务类列表在微软的这篇文章中列出

REALM每个 SPN都必须在密钥分发中心(KDC)并发布了服务密钥。该setspn.exe实用程序位于\Support\ToolsWindows 安装介质的文件夹中或作为资源工具包下载,可操纵 SPN 对 AD 中的计算机或其他帐户的分配。

当用户访问使用 Kerberos 进行身份验证的服务(“Kerberized”服务)时,他们会出示从 KDC(在 Windows 环境中为 Active Directory 域控制器)获得的加密票证。票证使用服务密钥。通过解密票证,服务证明它拥有给定 SPN 的密钥。在 Windows 主机上运行的服务使用与 AD 计算机帐户关联的密钥,但为了符合 Kerberos 协议,必须将主机上运行的每个 Kerberized 服务的 SPN 添加到 Active Directory 中 - 上面提到的内置 SPN 除外。在 Active Directory 中,SPN 存储在servicePrincipalName主机的计算机对象的属性中。

有关详细信息,请参阅:For more information, see:

答案2

yarek 的回答很棒,我投了赞成票,但我也想给你提供更多关于该主题的 Windows 特定信息,或者更确切地说,从更熟悉 AD 而不是 Kerberos 的人的角度来看,只是因为这个话题让我非常感兴趣。

我觉得这个人对此的解释非常好,我建议你阅读他的文章,但这里有一段特别简洁的段落针对你的问题:

“服务主体名称定义在帐户安全上下文下运行的服务。例如,计算机可能具有的一些服务是文件服务器/CIFS(通用 Internet 文件系统),如果它是域控制器,它将具有 LDAP SPN、Active Directory 复制 SPN 和 FRS SPN。当服务或应用程序在用户安全上下文下运行时,可以在用户帐户上定义服务主体名称。通常,这些类型的用户帐户称为“服务帐户”。您必须了解,服务主体名称在整个 Active Directory 林中必须是唯一的。”

完整文章在这里: https://docs.microsoft.com/en-us/archive/blogs/askds/kerberos-for-the-busy-admin

相关内容