2012-02-18 3 views
2

Мы запускаем устаревшее веб-приложение, использующее HTTP-аутентификацию. Я хочу сделать это приложение доступным для некоторых пользователей, но я не хочу раскрывать имя пользователя/пароль, и я не хочу раскрывать сервер, на котором работает приложение.Обход 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:[email protected]:80/ 
    ProxyPassReverse/http://admin:[email protected]:80/ 
</VirtualHost> 

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

ответ

2

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

Просто база-64 закодировать администратор: строка пароля и добавить 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>