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:[email protected]
ProxyPassReverse /mypath http://user:[email protected]

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

2 Answers 2

17

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 :)

0
2

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

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.