Какой самый простой способ создать прокси-сервер HTTP, который добавляет базовую аутентификацию к запросам?

Я пытаюсь использовать службу, предоставляемую сервером, которая требует базовой HTTP-аутентификации, однако приложение, которое я использую, не поддерживает аутентификацию. Я хотел бы создать прокси-сервер, который позволит моему приложению без авторизации подключаться через прокси-сервер (который добавит информацию об аутентификации) к серверу, требующему аутентификации. Я уверен, что это можно сделать, однако я поражен количеством прокси-серверов и не смог найти ответ, как это сделать.

По сути, мне кажется, что все, что я хочу сделать - это прокси-сервер обслуживать этот URL:

http://username:password@remoteserver/path

как этот URL:

http://proxyserver/path

Я могу запустить его на Linux, но плюс, если я могу запустить его и на Windows. Открытый исходный код или, по крайней мере, бесплатный является обязательным. Большой плюс, если это довольно просто настроить.

3 ответа

Решение

Basic Authentication normally is a Base64 Encoded String of "username:password" and a HTTP-Header "Authorization".

By adding the following to a Apache2 vHost you should be fine:

<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.

Вы можете войти в поле проверки подлинности или просто использовать wireshark, чтобы увидеть, что происходит.

Вы можете попробовать BusyBox httpd: вы можете проксировать запросы и добавлять базовую аутентификацию к прокси-пути.

Другие вопросы по тегам