Apache mod_proxy com autenticação automática

6

Estou configurando um proxy no apache por meio da diretiva ProxyPass e ProxyPassReverse para alguns URLs:

ProxyPass /mypath http://myotherserver.com
ProxyPassReverse /mypath http://myotherserver.com

No entanto, myotherserver.com exige uma autenticação (básica). Se eu não fizer nada, essa autenticação é passada para o cliente final. Por algum motivo, não quero isso e gostaria de adicionar as credenciais diretamente na configuração do meu apache. Como eu posso fazer isso ? Eu tentei:

ProxyPass /mypath http://user:[email protected]
ProxyPassReverse /mypath http://user:[email protected]

Mas isso não parece funcionar. Agradecemos antecipadamente por sua ajuda.

    
por ThR37 21.01.2014 / 12:09

2 respostas

13

Eu realmente encontrei a solução. Espero que possa ser útil para outras pessoas:

Execute o seguinte script python para obter sua autenticação hash :

import base64
hash = base64.b64encode(b'user:password')

Adicione a seguinte diretiva à sua configuração do Apache:

<Location /mypath>
RequestHeader set Authorization "Basic $hash"
</Location>

onde $hash é substituído pela string previamente calculada.

Verifique se mod_proxy e mod_headers estão disponíveis ( a2enmod proxy e a2enmod headers ). Reinicie o apache2 e pronto:)

    
por 21.01.2014 / 16:44
1

Obrigado @ ThR37 - este é mais um comentário para sua resposta, mas não é possível formatá-lo. : /

Eu precisava fazer isso com mod_rewrite, mas seu método foi usado:

  RewriteEngine On
  SSLProxyEngine on

  RewriteCond %{REQUEST_URI} ^/34506a81-1a6d-4596-beaf-580da9c98cca$
  SetEnvIf REQUEST_URI "/34506a81-1a6d-4596-beaf-580da9c98cca" DOAUTH
  RequestHeader set Authorization "Basic dXNlcjpwYXNzd29yZA==" env=DOAUTH
  RewriteRule /34506a81-1a6d-4596-beaf-580da9c98cca https://www.example.com/my/path [P,L]
  ProxyPassReverse /34506a81-1a6d-4596-beaf-580da9c98cca https://www.example.com/my/path
    
por 21.03.2016 / 20:57