有人可以在不过度简化的情况下解释 Windows 服务原则名称 (SPN) 吗?

Chr*_*son 33 security windows windows-server-2008 active-directory kerberos

我现在已经与服务原则名称搏斗了几次,而微软的解释是不够的。我正在配置一个 IIS 应用程序以在我们的域上工作,看起来我的一些问题与我需要在运行托管我的站点的应用程序池的 Windows 服务帐户上配置特定于 http 的 SPN相关。

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

有人可以解释 Windows 服务原则名称 (SPN) 而不过度简化解释吗?

创意类比的加分点会引起中等经验的系统管理员/开发人员的共鸣。

yrk*_*yrk 36

一个服务主体名称是从一个概念Kerberos。它是身份验证域内特定主机提供的特定服务的标识符。SPN 的常见形式是service class/ fqdn@ REALM(例如IMAP/mail.example.com@EXAMPLE.COM)。还有用户主体名称user@ REALM(或user1/ user2@ REALM,标识代言关系)的形式标识用户。该service class可宽松地被认为是该协议的服务。Microsoft 的这篇文章中列出了Windows 内置的服务类列表。

每个SPN必须在注册REALM密钥分发中心(KDC),并发出一个服务键。该setspn.exe实用程序\Support\Tools位于 Windows 安装媒体上的文件夹中,或作为资源工具包下载提供,用于将 SPN 分配给 AD 中的计算机或其他帐户。

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

有关详细信息,请参阅:有关 SPN 的 Microsoft TechNet 文章Ken Hornstein 的 Kerberos 常见问题解答

  • +1 - 你打败了我写这篇文章并且在你的方面做得很好,所以我选择编辑你的答案来添加一些细节,而不是写我自己的。 (4认同)

Rya*_*ies 12

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