Squid、身份验证、Outlook Anywhere、Windows 7 和 HTTP 1.1 = NIGHTMARE

Mas*_*imo 5 http windows-7 authentication squid outlook-anywhere

我正在使用 Samba 3.5.4 在 Linux CentOS 5.4 上运行 Squid 代理(最新版本,3.1.4),以允许域用户进行身份验证的 Web 访问;一切正常,甚至完全支持 Windows 7 客户端。身份验证对域用户是透明的,而对于非域用户则是明确请求的,并且如果用户可以提供有效的域凭据,它就可以工作。一切都很好。

然后,Outlook Anywhere 开始工作,随之而来的是痛苦和苦难。

当 Outlook(无论是 2007 还是 2010,都无所谓)在 Windows XP 客户端上运行时,它会通过 Squid 代理正常连接到其远程 Exchange 服务器。

当它在 Windows 7 上运行时,它不会。

如果从代理中取消身份验证要求,则一切都可以在 Windows 7 上运行,因此问题显然与使用 Squid 的 NTLM 身份验证有关。

深入研究 (WireShark),我发现 Outlook Anywhere 在 Windows 7 上运行时使用 HTTP 1.1,而在 Windows XP 上运行时使用 HTTP 1.0。而且看起来像 Squid,即使是它的最新版本,在正确处理 HTTP 1.1 方面仍然存在一些严重的问题,尤其是在混合使用 SSL 和代理身份验证时。

在等待 Squid 完全和正式支持 HTTP 1.1(看起来这可能需要长时间)时,我正在寻找以下解决方案之一:

  • 如果可能的话,让 Squid 正确处理这个问题。
  • 识别 Outlook Anywhere 连接并使 Squid 不需要对它们进行身份验证。但这并不容易:同样,Outlook 在 Windows XP 和 Windows 7 上运行时的行为有所不同,虽然在 Windows XP 上 Outlook 发送一个非常好的用户代理字符串“MSRPC”,但在 Windows 7 上它不发送任何(为什么?为什么?!?)。
  • 即使在 Windows 7 上运行,也强制 Outlook Anywhere 使用 HTTP 1.0。不,这不像在 Internet Explorer 中取消选择“使用 HTTP 1.1”那么简单,看起来 Outlook 会忽略该设置并自行选择要使用的协议。
  • 任何其他不涉及将特定目标 Exchange 服务器列入白名单的可行解决方案,这是我试图避免的最后手段。

小智 1

Windows 7、Server 2008 甚至 Vista 默认情况下也不支持 NTLMv1。如果它可以在 XP 上运行,但不能在 Windows 7 上运行,我会首先启用 NTLMv1 并查看它是否可以解决您的问题。当我遇到类似问题时,这是对我有帮助的帖子。Windows7 - \xe2\x80\x9c指定的网络密码不正确。\xe2\x80\x9d 当密码实际上正确时

\n