我正在尝试将 Apache 设置为内部 SharePoint 服务器的代理服务器。
我之前已经将 Apache 配置为代理服务器运行,以导出内部网页和 Web 应用程序。
但是,Sharepoint 使用 SSL 和 NTLM 身份验证,这对我来说是新鲜事 :(
我尝试了很多选项,当我收到身份验证弹出窗口时,流量似乎被转发了,但是当我插入用户/密码时,我又回到了同一个弹出窗口。
有人配置过 Apache 来这样做吗?
这是我的httpd.conf的一部分:
<VirtualHost *:443>
ServerName repository.out.com
SSLProxyEngine On
RequestHeader set Front-End-Https "On"
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://sharepoint.in.com
ProxyPassReverse / https://sharepoint.in.com
CacheDisable *
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
ErrorLog logs/jlanza_log
CustomLog logs/jlanza_log common
</VirtualHost>
答案1
NTLM 不是设计用于通过代理(或者在您的情况下是反向代理)来工作的。
与单个代理一样,插入反向代理将导致客户端浏览器和 Web 服务器之间的 NTLM 身份验证停止运行
(看http://support.microsoft.com/kb/198116/en-us)
但是,也有解决方法:
- 在您的情况下(使用 SSL),模块 mod_proxy_connect 可能提供解决方案,因为它似乎不会终止反向代理上的 http 会话。
- 我知道 squid 的最新版本使用名为“连接固定”的功能来代理 NTLM。我不确定 apache 是否有类似的功能。您可以使用 squid 代替 apache...
- 您可能还需要考虑更改 Firefox 中的某些默认值以使 NTLM 正常工作(请参阅 about:config -> apply Filter "NTLM")
- 除此之外,将身份验证从 NTLM 更改为 BASIC 可能会解决您的所有问题。由于您使用的是 SSL,因此在使用 Basic_Auth 时您甚至不必担心有人会嗅探您的密码。
答案2
您可以考虑安装 mod_ntlm 并使用 NTLMv2 身份验证将其直接配置到您的 AD。然后,代理将向 Active Directory 验证会话,并设置与 SharePoint 的连接。将有一个双重身份验证请求,因此您需要检查代理是否授权您。cookie 将为 SharePoint 服务器验证您的身份。对此我不确定,因为我从未测试过它。
祝你好运
无线网络
答案3
我遇到了同样的 NTLM Apache/2.4.6(CentOS),即使输入了正确的用户详细信息后,仍然会频繁弹出 NTLm 窗口。
通过加载模块 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so 而不是 LoadModule mpm_worker_module modules/mod_mpm_worker.so 解决了该问题
答案4
我在 Centos5 中的 2.2.3 版本上也遇到了同样的问题
我认为这是这个错误 https://issues.apache.org/bugzilla/show_bug.cgi?id=39673
我没有找到解决方案,也没有找到解决方法:我决定使用可以运行的旧版 apache(1.3.something?)。