以下是我的学习案例:
浏览器 ---> apache 代理 ---> ISA 服务器 ---> 互联网
ISA 服务器需要身份验证。
问题是允许通过两个代理使用 HTTPS。
与 HTTP 一起使用的配置如下:(是的,我不想使用 ProxyPass 而是使用 ProxyRequests)
<virtualhost *:8080>
...
SetEnv auth-proxy-chain on
...
ProxyRequests On
ProxyRemote * http://isaproxy:80
...
<proxy *>
AuthName "ISA server auth"
AuthType Basic
[here a module to authenticate]
require valid-user
Allow from all
</proxy>
...
</virtualhost>
用户可以在 apache 代理上进行身份验证,然后身份验证链被发送到允许 HTTP 流量的 ISA 服务器。
但是,当浏览器切换到 HTTPS 时,ISA 服务器会“使用”NTLM 并破坏 apache 代理上的身份验证。
如果我尝试使用 SSPI 模块(ntlm)如下:
啦啦啦
<proxy *>
AuthName "ISA server auth"
AuthType ntlm
[ SSPI stuff ]
Require valid-user
Allow from all
</proxy>
apache 服务器拒绝身份验证(或者是 ISA 服务器,我不太清楚)。
我使用 wireshark 查看标称进程,同时直接使用 ISA 服务器作为代理。第一个身份验证链是 BASIC 类型,然后它切换到 NTLM(并使用 NTLM 继续进行质询)。
我应该如何配置 apache,使其将 NTLM 身份验证传输到 ISA 代理而不进行检查 (*)?或者重写标头以强制进行 BASIC 身份验证?
(*) 这似乎并不像看起来那么容易……
答案1
如果您不在代理上进行身份验证,那么正常的身份验证过程将发生在 ISA 服务器和客户端之间。
如果这对您有用,那么这就是我提出的建议;除非服务器都使用相同的凭据进行基本身份验证,否则实际上没有办法在相同的标头中对两个不同的服务器进行双重身份验证。