我有我的本地主机上运行IIS上的网站。 该网站的目录安全性设置为只允许集成Windows身份validation。 它是内联网的一部分,需要通过我们的域帐户进行身份validation。
然后,我使用连接string中的Integrated Security = SSPI连接到SQL Server。
这与Microsoft Internet Explorer一起工作正常,它在login到域时自动validation身份,并且我可以看到logon_user是我的域帐户,SQL Server连接string工作得很好。
但是,当我使用Firefoxlogin时,事情是不同的。
首先,我被提示进行身份validation,这是正确的,因为Firefox没有configuration为信任本地主机足以自动发送凭据(事实上,我知道如何引入这个信任,这不是问题)。 然后我login,这再好,只要我input域帐户的细节一切都很好。 事实上,一个或两个debugging语句显示logon_user仍然是我的域帐户,一切都很好。
但是,当我连接到SQL Server(运行在远程服务器框上,我的域帐户具有完整的系统pipe理员权限)时,出现以下错误:
Microsoft OLE DB Provider for SQL Server (0x80040E4D) Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
这表明在身份validation堆栈中出了问题,出于某种原因,当我使用来自Firefox的Windows身份validation进行身份validation时,IIS不会作为已validation的帐户运行。
使用Google Chrome时,这也可以正常工作。
有什么build议么?
如Pontus Gagge所述 ,IIS需要将Kerberos票证传递给SQL server。 这足以让我的Google-Fu朝着正确的方向发展。
Firefox支持Kerberos,但是,您必须告诉它信任哪些域来发送Kerberos令牌。
注意:这与gbn的解决方案不同 ,它只是配置firefox,不会提示您在登录时输入域帐户的详细信息。
此外,如果您已经尝试在当前的Firefox会话中通过堆栈进行身份验证,则需要重新启动Firefox以使其工作。
我也使用IEtab插件的Intranet网站
IIS需要将Kerberos票证传递给SQL server以使此方案正常工作。 MSIE正在提取工作站会话票据,而Firefox正在协商自己的身份验证(而不是Kerberos)。
看看这个密集的博客文章作为了解需要什么的起点。 我不确定FF是否支持MS-Kerberos。
请注意,即使获取MSIE-> IIS-> SQL server身份验证可能会非常棘手,如果您有错误的版本或信任配置…