4

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

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

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

我尝试过寻找解决方案,但总是走入死胡同。我会找到有关该问题的讨论,并且每个发布的解决方案都会导致死链接……或者它在专家交流中,我无权查看解决方案。

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

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

从我读过的其他一些资料来看,如果我切换回 Windows 身份验证,似乎一切都应该正常工作,但随后我又回到了第一方,身份验证仅适用于某些用户而不适用于其他用户。

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


以下是我发现的讨论相同问题的 URL。(对不起,我无法将它们全部链接,否则我不会发布)

  • 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
4

1 回答 1

9

这是 FF 中的一个已知错误。请参阅 Internet Explorer 中的高级摘要身份验证工作,但是我们会收到来自火狐的每个 GET 请求的多个身份验证提示

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

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

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

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

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

3.3 摘要操作 客户端应该记住与身份验证会话相关的用户名、密码、随机数、随机数和不透明值,以用于在该保护空间内的未来请求中构造授权头。

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

Windows 身份验证似乎只适用于某些用户,而不适用于其他用户。它是如何失败的?你启用模拟了吗?

于 2011-03-04T17:34:06.287 回答