双跳窗口认证

Sam*_*gan 5 iis windows-server-2008 kerberos sql-server

在将凭据从用户传递到 IIS 然后从 IIS 传递到 SQL 时,我遇到了让 Windows 身份验证 (Kerberos) 工作的问题。我已经为 SQL 设置了 SPN,并将 IIS 服务器帐户设置为允许委派。

如果我将 IIS 计算机帐户设置为允许委派任何服务,则它可以工作: 替代文字

但是,如果我为特定服务设置它,则不会传递凭据,并且我收到有关与匿名用户连接的错误:

替代文字

正如您所看到的,我正在连接到 SQL Express 实例,并且我已经设置了许多 SPN 来尝试解决这个问题,但其中任何一个都不走运。显然,它在允许任何服务时工作的事实告诉我,此服务列表中缺少其他内容,但我不知道是什么!

Sam*_*gan 6

对于可能遇到此问题的其他任何人,问题归结为使用内核模式身份验证,以及应用程序池帐户的域用户帐户。

内核模式身份验证会为您完成与 IIS SPN 相关的大部分工作,但它希望您将系统帐户用于应用程序池标识。如果您使用域帐户,则需要为此用户设置 HTTP SPN。然后,您需要在此用户帐户上委托对 SQL 的访问,而不是在 IIS 机器帐户上,就像您通常使用内核模式身份验证一样。