如何将请求代理到受 NTLM 保护的网站,例如 TeamFoundation 和 SharePoint?我一直收到 401 身份验证错误。
最佳答案
根据 this Microsoft TechNet article ,你不能。
Microsoft NTLM 使用状态 HTTP,这违反了 HTTP/1.1 RFC。它依赖于身份验证(涉及握手和几个初始 401 错误的事件)和后续连接到通过从客户端到服务器的完全相同的连接来完成。这使得 HTTP 代理几乎不可能,因为每个请求通常会通过从开放连接池中挑选的新连接或随机连接。不过这是可以做到的。
NGiNX 显然通过“ntlm”选项支持这一点,但这是他们商业产品的一部分。 Apache HTTPD 似乎为此提供了几个实验性补丁,但这需要重建 Apache。 TinyProxy 也不支持这个。 HAProxy 助您一臂之力!
这是一个有效的运行配置示例 - 这是一个相当简单的设置,只有一个后端服务器:
backend backend_tfs
server static teamfoundation.mycompany.com:8080 check maxconn 3
mode http
balance roundrobin
option http-keep-alive
option prefer-last-server
timeout server 30s
timeout connect 4s
frontend frontend_tfs
# You probably want something other than 127.0.0.1 here:
bind 127.0.0.1:8080 name frontend_tfs
mode http
option http-keep-alive
timeout client 30s
default_backend backend_tfs
此处的重要选项是http-keep-alive 和prefer-last-server。
关于http - 反向代理受 NTLM 保护的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41936501/