为什么鱿鱼破解Kerberos / NTLMauthentication?

我使用squid 2.6.22(Centos 5 Default)作为代理。 当他们需要NTLM或Kerberos身份validation时,Squid似乎中断了网页的身份validation过程。 我用SharePoint 2007testing并尝试了所有3种身份validation方法(NTLM,Kerberos,Basic)。 在任何情况下访问没有鱿鱼的网站。 当我用鱿鱼访问相同的页面时,只有basic-auth工作。 使用IE或Firefox不会有任何区别。 Squid本身可以被任何人使用(没有configurationauth_param)。 在网上寻找解决scheme有点棘手,因为大多数主题围绕着auth_param来validation用户对鱿鱼的authentication,而不是authentication用户到鱿鱼网页。 谁能帮忙?

编辑:
对不起,但我的第一个testing是完全搞砸了。 我对错误的networking服务器进行了testing(备忘录:在testing之前总是检查假设)。 现在我意识到问题情况完全不同。

  • Kerberos适用于IE
  • Kerberos适用于Firefox(在about:config中更改“network.negotiate-auth.trusted-uris”之后)
  • NTLM适用于IE
  • NTLM不能在Firefox中工作(即使在about:config中更改“network.automatic-ntlm-auth.trusted-uris”后)

顺便提一句:在squid中提供NTLM-passthrough的function称为“连接钉扎”,HTTP头“Proxy-support:基于会话的authentication”

我想你问什么是非常相对于如何configurationApache到基本身份validation或允许ntlm代理时? 。 特别是,如果要同时validation代理和远程站点,则不可能(除非客户端使用CONNECT )。

如果你的情况是你不想对Squid进行身份validation,而只是对远程站点进行身份validation,那么我认为Squid在某种程度上正在做正确的事情:一旦你通过身份validation获取的资源在caching中,现在也可以针对其他客户端的未经authentication的请求。 更确切地说,看看这个stream程:

  • 用户A已经请求了一些that.server.com上的资源/index.html并提供了authentication信息。
  • 服务器返回HTTP状态200,Squidcaching资源/index.html
  • 现在用户B已经请求了相同的资源并且没有提供authentication信息/或者提供了一些authentication信息。

可能的情况:

  • Squid从caching中向用户B返回/index.html 。 这是错误的,因为只有服务器知道哪些用户有权访问哪些资源。
  • Squid也尝试将authentication信息与/index.html一起caching。 对于基本authentication,Squid可以捕获用户名。 其他机制(NTLM / Kerberos)只通过HTTP发送散列,因此无法学习用户名。
  • 鱿鱼从不caching/index.html

Firefox中存在一个错误,导致NTLM在某些情况下失败。 使用Squid作为代理将几乎总是满足这些条件。 请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=602814