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


28

我已经与服务原理名称进行了数次交涉,而Microsoft的解释还不够。我正在配置一个IIS应用程序以在我们的域上工作,并且看起来有些问题与我需要在运行托管我的站点的应用程序池的Windows服务帐户上配置http特定SPN​​有关

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

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

创造性的类比奖励积分,将引起经验丰富的系统管理员/开发人员共鸣。


4
请查看Bill Bryant的“设计认证系统:四个场景中的对话”是否满足您对创造性类比的要求。
yrk 2012年

Answers:


33

一个服务主体名称是从一个概念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\ToolsWindows安装媒体上的文件夹中找到,也可以作为资源工具包下载来使用,它可以操纵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 FAQ。


4
+1-您击败我写这篇文章,并且在您的方面做得很好,因此我选择编辑您的答案以添加一些细节,而不是自己写。
埃文·安德森

@yarek的最后两个链接于2019
Andrew Watson

10

yarek的回答很好,我对此表示赞成,但我也想向您提供有关该主题的Windows特定信息,或者是从更熟悉AD而不只是Kerberos的人的角度出发,因为这是我非常感兴趣的话题。

我觉得这个人在解释它方面做得很出色,我建议您阅读他的文章,但这是针对您的问题的特别简洁的段落:

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

整篇文章都在这里:http : //blogs.technet.com/b/askds/archive/2008/03/06/kerberos-for-the-busy-admin.aspx

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.