IIS到SQL Server kerberos auth问题

cro*_*san 4 sql-server iis kerberos

我们有一个第三方产品,允许我们的一些用户通过一个单独的服务器(SvrWeb)上的网站操作数据库中的数据(我们称之为SvrSQL).

在SvrWeb上,我们为此应用程序设置了一个特定的非默认网站,因此我们不使用http://SvrWeb.company.com访问网站,而是使用http://application.company.com解析为SvrWeb并且主机标头解析为正确的网站.

还为此站点设置了一个特定的应用程序池,它使用我们称之为"company\SrvWeb_iis"的Active Directory帐户标识.我们设置允许在此帐户上进行委派,并允许它模拟我们希望它执行的另一次登录.(我们希望此帐户将登录到网站的人员的AD凭据传递给SQL Server而不是服务帐户.

我们还通过以下命令为SrvWeb_iis帐户设置了SPN:setspn -A HTTP/SrvWeb.company.com SrvWeb_iis

网站启动,但调用数据库的网站部分返回消息:无法执行数据库查询.用户'NT AUTHORITY\ANONYMOUS LOGON'登录失败.

我认为我们已经正确设置了SPN信息,但是当我检查SrvWeb上的安全事件日志时,我看到了登录的条目,但它似乎是使用NTLM而不是kerberos:

Logon Type: 3
Logon Process:  NtLmSsp 
Authentication Package: NTLM
Run Code Online (Sandbox Code Playgroud)

任何有关此设置的想法或文章都将非常感谢!

如果它有帮助,我们使用SQL Server 2005,Web和SQL服务器都是Windows 2003.

小智 5

kerberos失败有几个可能的原因,包括缺少SPN和重复的SPN.

如果SQL在自定义帐户下运行,您还需要为SQL添加SPN.
另外请记住,您应该为FQDN添加SPN,这是DNS中的主机(A)条目而不是CNAME.

检查NTAuthenticationProviders http://support.microsoft.com/kb/215383的值

尝试使用DelegConfig,它会显示其SPN或其他内容时缺少的内容.
http://www.iis.net/community/default.aspx?tabid=34&g=6&i=1887