Обход HTTP-аутентификации с использованием обратного прокси - PullRequest
2 голосов
/ 19 февраля 2012

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

Для решения этой проблемы я намерен использовать mod_proxy. Я сделал следующую конфигурацию:

<VirtualHost *:443>
    # SSL stuff goes in here
    ServerName "proxy.local"
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://admin:password@legacy.local:80/
    ProxyPassReverse / http://admin:password@legacy.local:80/
</VirtualHost>

Это работает, за исключением той части, где пользователей все еще просят ввести admin / пароль самостоятельно. Могу ли я заставить Apache отправить имя пользователя / пароль, предоставленные в ProxyPassReserve, и не запрашивать его у пользователя? Я не смог найти ответ в документации Apache mod_proxy .

1 Ответ

2 голосов
/ 17 марта 2012

Вам нужно будет включить mod_headers и установить заголовок http Authorization перед передачей запроса от mod_proxy.

Просто base-64 кодирует строку admin: пароль и добавляет директиву RequestHeader в вашу конфигурацию:

RequestHeader set Authorization: "Basic YWRtaW46cGFzc3dvcmQ="


<VirtualHost *:443>
    # SSL stuff goes in here
    ServerName "proxy.local"
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://legacy.local:80/
    ProxyPassReverse / http://legacy.local:80/
    RequestHeader set Authorization: "Basic YWRtaW46cGFzc3dvcmQ="
</VirtualHost>
...