Обход 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
Удачи!