使用IIS,Firefox和SQL Server进行集成Windows身份验证

THE*_*ike 15 windows sql-server authentication iis firefox

我在我的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'.
Run Code Online (Sandbox Code Playgroud)

这向我表明身份验证堆栈中存在问题,出于某种原因,当我使用来自firefox的Windows身份验证进行身份验证时,IIS未作为经过身份验证的帐户运行.

使用谷歌浏览器时也可以正常使用.

有什么建议?

THE*_*ike 28

AS 指出庞Gagge,IIS需要一个传递的Kerberos票据到SQL Server.这足以让我的谷歌向正确的方向倾斜.

Firefox支持Kerberos,但是,您必须告诉它它信任哪些域来发送Kerberos令牌.

  1. 打开Firefox
  2. 在地址栏中输入:about:config
  3. Firefox3.x及更高版本要求您同意谨慎行事.
  4. 加载配置页面后,在过滤器框中键入:network.negotiate-auth
  5. 双击该行修改network.negotiate-auth.trusted-uris并输入yourdomain.com
  6. 可以通过逗号分隔多个域来添加,例如yourdomain.com,yourotherdomain.com

注意:这是一样的GBN解决方案刚刚配置的Firefox不提示您在登录时输入域帐户的详细信息.

此外,如果您已经尝试在当前的Firefox会话中通过堆栈进行身份验证,则需要重新启动Firefox才能使其正常工作.


gbn*_*gbn 5

  1. 打开Firefox
  2. 在地址栏中输入:about:config
  3. Firefox3.x及更高版本要求您同意谨慎行事.
  4. 加载配置页面后,在过滤器框中键入:network.automatic
  5. 双击该行修改network.automatic-ntlm-auth.trusted-uris并输入http://www.replacewithyoursite.com
  6. 可以通过逗号分隔多个站点来添加它们,例如http : //www.replacewithyoursite.com,http://www.replacewithyourintranetsite.com

我还为Intranet站点使用IEtab附加组件


Pon*_*gge 5

IIS需要将Kerberos票证传递给SQL Server才能使此方案正常工作.MSIE正在拿起工作站会话票,而Firefox正在协商自己的身份验证(而不是Kerberos).

查看这篇密集的博客文章,作为了解所需内容的起点.我不确定FF是否支持MS-Kerberos.

请注意,如果您的版本或信任配置错误,即使获得MSIE-> IIS-> SQL Server身份验证也很棘手...