7

I am setting up a proxy in apache through the directive ProxyPass and ProxyPassReverse for some urls:

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

However, myotherserver.com require a (basic) authentication. If I don't do anything, this authentication is passed to the final client. For some reason, I don't want that and I would like to add the credentials directly in my apache configuration. How can I do that ? I tried:

ProxyPass /mypath http://user:pass@myotherserver.com
ProxyPassReverse /mypath http://user:pass@myotherserver.com

But it does not seems to work. Thanks in advance for your help.

16

I have actually found the solution. I hope it can be useful for other people:

Run the following python script to get your authentification hash:

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

Add the following directive in your apache configuration:

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

where $hash is replaced with the previously computed string.

Make sure that mod_proxy and mod_headers are available (a2enmod proxy and a2enmod headers). Restart apache2 and you are done :)

1

Thanks @ThR37 - this is more of a comment for your answer, but can't format it there. :/

I needed to do it with mod_rewrite, but your method was used:

  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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.