我在同一台服务器上运行IIS和SQL Reporting Server。 IIS以d\acct1运行,SSRS以d\acct2运行。
最初,我为d\acct1和d\acct2注册了一个SPN HTTP/server.d.com ,并为Active Directory中的无约束的Kerberos委派configuration了两者。
这个configuration打破了Kerberos,因为HTTP/server.d.com有重复的SPN。
如果我删除SSRS的SSN,IIS工作。 如果我删除IIS的SPN,SSRS的作品。
有没有办法在同一台服务器上运行的两个不同的服务帐户之间共享一个SPN,以便它们不会创build重复的SPN?
或者,我必须在iis.server.d.com和reports.server.d.com活动目录中创build两条Alogging,并使用主机标题将两个别名保持在每个相应服务的内部?
研究Kerberos委托如何工作表明不,您不能在同一个机器上的服务帐户之间共享SPN。
我解决了这个问题,为我的服务器configuration第二个IP地址,并将IIS映射到一个IP地址,然后将SSRS映射到另一个IP地址。
然后,我在DNS中创build了两个新的Alogging(不要使用Clogging,它们对于Kerberos委派不可靠)来指向这些服务。 iis.server.d.com指向IIS IP地址, ssrs.server.d.com指向SSRS IP。
最后,我删除了d\acct1和d\acct2所有SPN,并将SPN分别重新分配为HTTP/iis.server.d.com和HTTP/ssrs.server.d.com 。
另外,我发现使用ADSIEdit编辑SPN比使用setspn命令行要容易得多。