Я пытаюсь использовать службу, предоставляемую сервером, которая требует базовой HTTP-аутентификации, однако приложение, которое я использую, не поддерживает аутентификацию. Я бы хотел создать прокси, который позволит моему приложению без аутентификации подключаться через прокси (который добавит информацию для аутентификации) к серверу, требующему аутентификации. Я уверен, что это можно сделать, но я поражен количеством прокси и не могу найти ответа, как это сделать.
В принципе, кажется, все, что я хочу сделать, это сделать так, чтобы прокси-сервер обслуживал этот URL:
http://username:password@remoteserver/path
как этот URL:
http://proxyserver/path
Я могу запустить его в Linux, но плюс, если я могу запустить его и в Windows. Открытый исходный код или, по крайней мере, бесплатный. Большой плюс в том, что его довольно просто настроить.
Обычная аутентификация обычно представляет собой закодированную в Base64 строку «имя пользователя: пароль» и HTTP-заголовок «Авторизация».
Добавив следующее к vHost Apache2, все будет в порядке:
<Location /path>
RequestHeader set Authorization "Basic <base64string>"
</Location>
ProxyPass /path http://backend/path
ProxyPassReverse /path http://backend/path
Вы можете base64 закодировать часть «имя пользователя: пароль» в http://www.motobit.com/util/base64-decoder-encoder.asp (например). В приведенном выше примере требуются mod_headers и mod_proxy (должны быть доступны как для Linux, так и для Windows с Apache2.
Вы также можете изменять запросы (добавлять / изменять заголовки) в некоторых других пакетах, таких как WinGate в Windows.
Если вы видите всплывающее диалоговое окно браузера, это обычно означает, что вы получаете ответ 407 от прокси или 401 от конечного сервера, это не обязательно указывает на использование HTTP Basic auth.
Вы можете регистрировать поля запроса аутентификации или просто использовать wirehark, чтобы узнать, что происходит.