我在同一台服务器上运行 IIS 和 SQL Reporting Server。IIS 以 运行d\acct1
,SSRS 以 运行d\acct2
。
HTTP/server.d.com
最初,我为d\acct1
和都注册了一个 SPN d\acct2
,并在 Active Directory 中为两者配置了不受约束的 Kerberos 委派。
此配置破坏了 Kerberos,因为 有重复的 SPN HTTP/server.d.com
。
如果我删除 SSRS 的 SPN,IIS 就可以正常工作。 如果我删除 IIS 的 SPN,SSRS 就可以正常工作。
有没有办法在同一台服务器上运行的两个不同的服务帐户之间共享一个 SPN,以便它们不会创建重复的 SPN?
或者,我必须在活动目录中为iis.server.d.com
和创建两个 A 记录reports.server.d.com
并使用主机标头以使两个别名在每个相应的服务中保持直线?
答案1
对 Kerberos 委派的工作方式的研究表明,不可以,您不能在同一台机器上的服务帐户之间共享 SPN。
我通过为我的服务器配置第二个 IP 地址并将 IIS 映射到一个 IP 地址、将 SSRS 映射到另一个 IP 地址来解决了这个问题。
然后,我在 DNS 中创建了两个新的 A 记录(不要使用 C 记录,它们对于 Kerberos 委派不可靠)以指向服务。iis.server.d.com
指向 IIS IP 地址并ssrs.server.d.com
指向 SSRS IP。
最后,我删除了和的所有 SPN d\acct1
,d\acct2
并分别将 SPN 重新分配为HTTP/iis.server.d.com
和HTTP/ssrs.server.d.com
。
此外,我发现使用ADSI編輯 远的比使用setspn
命令行更容易。