我的localhost上有一个在IIS上运行的网站。此网站的目录安全性设置为仅允许集成Windows身份验证。它是Intranet的一部分,需要通过我们的域帐户进行身份验证。
然后我在连接字符串中使用Integrated Security = SSPI连接到SQL Server。
这适用于Microsoft Internet Explorer,当我登录到域时它会自动验证我,我可以看到logon_user是我的域帐户,SQL Server连接字符串工作正常。
然而,当我使用Firefox登录时,情况就不同了。
首先,我被提示进行身份验证,这很好并且正确,因为Firefox未配置为足以信任localhost足以自动发送凭据(事实上,我知道如何引入此信任,这不是问题) 。我然后登录,再次没问题,只要我输入域名帐户详细信息一切正常。实际上,一两个调试语句显示logon_user仍然是我的域帐户,一切都很好。
但是,当我连接到SQL Server(在远程服务器上运行,我的域帐户具有完全sysadmin权限)时,我收到以下错误:
Microsoft OLE DB Provider for SQL Server (0x80040E4D)
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
这表明身份验证堆栈中出现了问题,由于某些原因,当我使用来自firefox的Windows身份验证进行身份验证时,IIS未作为经过身份验证的帐户运行。
使用谷歌浏览器时也可以正常使用。
有什么建议吗?
答案 0 :(得分:28)
Firefox支持Kerberos,但是,你必须告诉它它信任哪些域来发送Kerberos令牌。
注意:这 与gbn的solution相同,只是将firefox配置为不提示您输入域帐户详细信息登录。
此外,如果您已尝试在当前的Firefox会话中通过堆栈进行身份验证,则需要重新启动Firefox才能使其正常工作。
答案 1 :(得分:5)
我还为Intranet站点使用IEtab附加组件
答案 2 :(得分:5)
IIS需要将Kerberos票证传递给SQL Server才能使此方案生效。 MSIE正在拿起工作站会话票,而Firefox正在协商自己的身份验证(而不是Kerberos)。
查看例如this dense blog post作为了解所需内容的起点。我不确定FF是否支持MS-Kerberos。
请注意,如果您的版本或信任配置错误,即使获得MSIE-> IIS-> SQL Server身份验证也很棘手......