asp.net - Firefox 在 IIS6 上启用摘要式身份验证的每个 HTTP 请求上都要求输入用户名/密码

标签 asp.net iis firefox iis-6 digest-authentication

我最近在 ASP.NET 中为我的公司创建的 Intranet 网站/应用程序启用了摘要式身份验证。

我这样做的原因是因为 Windows 身份验证似乎只适用于某些用户,而不适用于其他用户。我不知道为什么,我对 IIS 的了解也不够,无法尝试跟踪问题。经过一些试验和错误,我发现摘要式身份验证似乎给了我想要的行为。即:仅允许在域上拥有有效帐户的用户使用其凭据登录网站。

现在的问题是 Firefox (3+) 似乎要求用户对发送到服务器的每个 HTTP 请求进行身份验证。这在 Internet Explorer (6+) 或 Chrome 中似乎不会发生。

我试过寻找解决方案,但我总是走到死胡同。我会找到关于这个问题的讨论,每个发布的解决方案都会导致一个死链接……或者它在 Experts Exchange 上,我无权查看解决方案。

这个问题似乎与(从我读到的)不同的浏览器发送它们的身份验证 header 的方式与 IIS 解释它们的方式有关。我不确定我能做些什么来改变这一点?我发现的解决方案之一提到编写一个 ISAPI 过滤器来解决这个问题,但当然,到最终过滤器的链接已损坏,我不知道如何自己制作一个。

我尝试在 about:config 中处理 NTLM 和其他与身份验证相关的字符串,以尝试强制 Firefox 信任我的服务器,但这似乎也不起作用。

从我读过的其他一些来源来看,如果我切换回 Windows 身份验证,一切似乎都应该可以工作,但是我又回到了原点,其中身份验证仅适用于某些用户而不适用于其他用户。

任何一个问题的解决方案都适用于我,但我对 Windows 身份验证问题的信息很少。如果有人可以指导我跟踪问题,我也很乐意为此发布更多信息。

以下是我发现的讨论看似相同问题的网址。 (对不起,我不能把它们全部链接起来,否则我不会发帖)

  • support.mozilla.com/tiki-view_forum_thread.php?locale=pt-BR&forumId=1&comments_parentId=346851
  • www.experts-exchange.com/Software/Internet_Email/Web_Browsers/Mozilla/Q_24427378.html
  • channel9.msdn.com/forums/TechOff/168006-Twin-bugs-in-IIS-IE-unfair-competitive-advantage-EDIT-SOLVED/
  • www.derkeiler.com/Newsgroups/microsoft.public.inetserver.iis.security/2006-03/msg00141.html
  • 最佳答案

    这是 FF 中的一个已知错误。 See Advanced digest authentication works from Internet Explorer however we receive multiple authentication prompts on each GET request from fire fox

    IE 6 有同样的错误。一个潜在的解决方法是在 IIS6 中重新启用“旧”摘要:

    http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/1d6e22ac-0215-4d12-81e9-c9262c91b797.mspx?mfr=true

    当前,如果服务器发送不透明指令,IE 客户端将返回该指令值,如 RFC 中指定的那样。不幸的是,对于来自客户端的后续请求,其中 nonce 计数增加(计数 2 及以上),不发送 opaque 指令值。这将导致服务器上的身份验证失败,并返回 401 Unauthorized。 IE 客户端现在请求新挑战的用户名和密码,并检索文件。

    这需要额外的往返行程,并且每次都会提示用户输入凭据。

    RFC 声明 opaque 必须始终根据来自客户端的请求发送。
    IE6 使用的 Digest 实现不符合 RFC ( http://www.ietf.org/rfc/rfc2617.txt )。
    3.2.2 授权请求头
    opaque 和 algorithm 字段的值必须是提供的值
    在实体的 WWW-Authenticate 响应头中
    要求。

    3.3 摘要操作
    客户端应该记住用户名、密码、nonce、nonce 计数和
    与身份验证 session 关联的不透明值用于
    在 future 的请求中构造 Authorization header
    保护空间。

    因为客户端需要返回 opaque 的值
    服务器在 session 期间给予它的指令,
    不透明数据可用于传输身份验证 session 状态
    信息。
    -------- 编辑添加 -----

    Windows Authentication seemed to only work for some users, and not for others. How did it fail? Did you enable impersonation?

    关于asp.net - Firefox 在 IIS6 上启用摘要式身份验证的每个 HTTP 请求上都要求输入用户名/密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4167271/

    相关文章:

    asp.net - 检查 site.master 页面中的状况

    c# Asp.net 文本框的验证方法?

    asp.net - 如何在IIS 7.5(经典模式)中添加通配符映射?

    python - Selenium Firefox 配置文件不工作

    c# - NHibernate 删除我的行

    c# - 根据数据库值预选列表框中的多个项目

    php - Azure 上的 AD/Windows 身份验证

    http - IIS HTTP 到 HTTPS 相对重定向

    firefox - 边界半径;溢出 : hidden, 并且文本未被剪裁

    html - 为什么当我播放 HTML5 mp3 文件时,Firefox 不在 HTTP header 中发送 Referer?