Обход HTTP базовой аутентификации локально

У меня есть два приложения, которые я не могу изменить:

A: предоставляет URL-адрес, защищенный базовой аутентификацией HTTP. B: должен получить доступ к этому URL, но не поддерживает базовую аутентификацию. Учетные данные доступны.

Как я могу заставить мои два приложения работать вместе?

Я думал, что локальный прокси может быть отличным, который вводит аутентификацию. Например, используя socat:

socat TCP4-LISTEN:81,reuseaddr,fork TCP:UrlToA:80,<inject-basic-auth>=user:pass

Однако socat не предоставляет такую ​​опцию, как . Кто-нибудь знает какой-нибудь инструмент, который может помочь? Есть другой выход?

2 ответа

Решение

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

Ваш обратный прокси-сервер прослушивает какой-либо сокет (например, proxy:8080) и перенаправляет запросы в ваше реальное приложение A, вставляя заголовки.

client_B ----> http://proxy:8080 -----> http://server_A:80

Nginx легок, высокопроизводителен и прост в настройке. И легко найти документы в Интернете для того, что вы хотите. Смотрите, например, http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy

Эта проблема кажется очень специфичной. Таким образом, вы, вероятно, не найдете готовый инструмент.

Если вы хотите сделать это самостоятельно, ваш лучший подход, вероятно, заключается в расширении socat:

http://www.dest-unreach.org/socat/download/socat-1.7.2.2.tar.gz

Удачи!

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