为什么当 setspn -l 找到 spn 时,setspn -q 会返回“未找到这样的 spn”?

为什么当 setspn -l 找到 spn 时,setspn -q 会返回“未找到这样的 spn”?

我正在尝试解决客户站点 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

相关内容