Mod_proxyを有効にしたApacheウェブサーバーと仮想ホストproxy.domain.comを持っています。このプロキシは、AuthType Basicでユーザーに資格情報を要求するように構成されています。次に、web.domain.comのコンテンツは、ProxyPassおよびProxyReverseを使用してプロキシ経由で利用できます。ただし、REMOTE_USER変数は空です。 mod_rewriteとmod_headersでこれを実現するためにさまざまなことを読みましたが、すべての試行が失敗しました。誰かが私より幸運でしたか?
ありがとう。
これは、mod_headers、mod_rewrite、およびmod_proxyで可能です。
プロキシでは、認証が機能していて、REMOTE_USERを適切に設定していることを前提としています。その場合は、REMOTE_USERの値を次のようにバックエンドのProxy-Userヘッダーに入れます。
RewriteRule .* - [E=PROXY_USER:%{LA-U:REMOTE_USER}] # note mod_rewrite's lookahead option
RequestHeader set Proxy-User %{PROXY_USER}e
ここで何が起こるかです:
これで、バックエンドでそのヘッダー値をプルし、REMOTE_USERを次のように設定できます。
RewriteCond %{HTTP:Proxy-user} ^(.*)$
RewriteRule .* - [E=REMOTE_USER:%1]
ここで何が起こるかです:
バックエンド側では、mod_rewriteを台無しにしたくない場合は、標準のmod_auth_basicを使用することもできます。ユーザーをX-Remote-Userとして渡すと仮定します。
<Location />
AuthBasicFake "%{HTTP:X-Remote-User}" "password"
</Location>
これは2.4でのみ機能しますが、真のmod_authの他の側面(つまり、PHPのauthサポート)をセットアップするという追加の利点があります。
Apache 2.4では、mod_authnz_ldapおよびmod_kerbによって生成された環境変数を取得しようとすると、これが機能しました。
あなたが探しているとしましょうAUTHORIZE_sAMAccountName
、
RewriteEngine On
RewriteRule .* - [E=THE_ACCOUNT_NAME:%{ENV:AUTHORIZE_sAMAccountName}]
RequestHeader set MY_ACCOUNT_NAME %{THE_ACCOUNT_NAME}e
その後、HEADERはたとえばログに記録されます。
CustomLog /tmp/custom.log "%h %l %u %t \"%r\" %>s %b %{MY_ACCOUNT_NAME}i"
参照: