web-dev-qa-db-ja.com

自動認証を備えたApachemod_proxy

一部のURLのディレクティブProxyPassおよびProxyPassReverseを使用して、Apacheでプロキシを設定しています。

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

しかしながら、 myotherserver.com(基本)認証が必要です。私が何もしない場合、この認証は最後のクライアントに渡されます。何らかの理由で、それは望ましくなく、Apache構成に資格情報を直接追加したいと思います。どうやってやるの ?私は試した:

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

しかし、動作しないようです。よろしくお願いします。

7
ThR37

私は実際に解決策を見つけました。他の人にも役立つことを願っています:

次のpythonスクリプトを実行して、認証を取得しますhash

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

Apache構成に次のディレクティブを追加します。

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

どこ $hashは、以前に計算された文字列に置き換えられます。

mod_proxyおよびmod_headers 利用可能です (a2enmod proxyおよびa2enmod headers)。 Apache2を再起動すると、完了です:)

16
ThR37

ありがとう@ ThR37-これはあなたの答えに対するコメントですが、そこでフォーマットすることはできません。 :/

Mod_rewriteでそれを行う必要がありましたが、あなたのメソッドが使用されました:

  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
1
Bill McGonigle