我正在尝试解决客户站点 IIS 中托管的网站的 Windows 身份验证失败的原因。执行setspn -l serviceUser
列出与服务帐户关联的 spn 时,我们得到以下输出
Registered ServicePrincipalNames for CN=serviceUser,CN=Users,DC=test,DC=local:
http/service.test.local test\serviceUser
然而,当我们使用搜索 spn 时,setspn -q http/service.test.local
我们得到以下输出:
Checking domain DC=test,DC=local
No such SPN found.
什么原因导致 spn 以一种方式被找到,而另一种方式却找不到?
答案1
问题最终是客户实际上创建了 SPN,并且 SPN 中包含了用户名。我不确定他们是如何做到的,可能不是使用 setspn。
如果我更加仔细地观察,我就会注意到,因为它的输出 setspn -l serviceUser
包含了 spn 输出中的用户名。
通过从 spn 中删除用户名来纠正该问题后,setspn 的输出将符合预期。
c:\>setspn -l serviceUser
Registered ServicePrincipalNames for CN=serviceUser,CN=Users,DC=test,DC=local:
http/service.test.local
c:\>setspn -q http/service.test.local
Checking domain DC=test,DC=local:
CN=serviceUser,CN=Users,DC=test,DC=local:
http/service.test.local