Вот мой учебный пример:
браузер ---> прокси-сервер 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, после чего цепочка аутентификации отправляется на ISA-сервер, который разрешает HTTP-трафик.
Но пока браузер переключается на HTTPS, сервер ISA «говорит» NTLM и нарушает аутентификацию на прокси-сервере apache.
Если я попытаюсь использовать модуль SSPI (ntlm) примерно так:
Blablabla
<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?
(*) Кажется, это не так просто, как кажется ...
Если вы не выполняете аутентификацию на прокси-сервере, то между ISA-сервером и клиентом будет происходить нормальный процесс аутентификации.
Если это сработает для вас, то я бы сделал это предложение; на самом деле нет возможности выполнить двойную аутентификацию в одних и тех же заголовках на обоих разных серверах, если только оба сервера не выполняют базовую аутентификацию с одинаковыми учетными данными.