![需要帮助设置 Kerberos 身份验证的 SPN](https://linux22.com/image/543520/%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9%E8%AE%BE%E7%BD%AE%20Kerberos%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E7%9A%84%20SPN.png)
我正在使用 IIS 7 在 Windows 身份验证下设置网站。我看到身份验证问题,我几乎确信它与 Kerberos 问题有关,而且我错误地设置了 SPN。我使用的场景如下。
我已经创建了一个新的测试域(其 FQDN 可以称为“测试网“)由域控制器(我们称此 mc 为“test-DC”)管理。在这个新域(测试)下,我托管了一个 IIS 服务器,该服务器应该使用带有 Kerberos 委派的 Windows 身份验证。我在 IIS 管理器中启用了 Windows 身份验证,而禁用了其他身份验证。假设此 IIS 计算机名称为“test-iis”,并且活动目录中的 IIS 服务器用户名为“user-iis”。IIS 服务器中的应用程序池在服务帐户“TEST\user-iis”下运行。我正在尝试为 HTTP 服务类型设置 SPN。
第一个问题:我将 SPN 设置为
setspn -a http/test-iis.test.net
这个 SPN 设置正确吗?
我的第二个问题是。我在域控制器中设置此 SPN 值,认为 DC 是将验证凭据等的实体。我的想法对吗?
有关此问题的任何建议对我和其他人来说都将非常有帮助。
谢谢..
[编辑] 还有一件事,我能够从 IIS 服务器 ping 通同一域中的另外两台机器,但是我无法使用另外两台机器 ping 通 IIS 服务器。有人能帮助我理解为什么会这样吗?
答案1
由于您正在以 TEST\user-iis 身份运行应用程序池,因此您必须将 SPN 应用于那帐户。通常认为,您还应该包括另一个 SPN 作为主机的简称。
setspn -a http/test-iis.test.net TEST\user-iis
setspn -a http/test-iis TEST\user-iis
需要澄清的是,setspn 使用这些命令所做的只是修改该用户帐户的“servicePrincipalName”属性。如果您打开它的“属性”对话框并转到“属性”选项卡,您可以向下滚动到 servicePrincipalName,打开它,然后查看所做的更改。
关于您的 ping 问题,请检查 IIS 框上的 Windows 防火墙。默认情况下未启用 ICMP。
答案2
使用setspn命令时不要忘记IWAM账户,如下所示:
setspn -a http/test-iis.test.net 域名\IWAM_ACCOUNT
注意:
IWAM_ACCOUNT
是用于运行您正在使用的应用程序池的帐户。(必须是域级帐户)- 您还应该再次运行相同的命令,但将“test-iis.test.net”替换为“test-iis”
关于您的第二个问题,您说的对,更改是在 Active Directory 中进行的......但该setspn
命令可以在域中的任何服务器上运行。