WindowsでApache 2.2をmod_auth_sspiおよびmod_headersとともに使用する。現在認証されているユーザーをX-Remote-Userヘッダーのプロキシターゲットに渡そうとしています。
これは簡単だと思いますが、Apacheを1時間ほど口論していて、ドキュメントやgoogleで秘密のソースを見つけることができません。
私の設定は以下の通りです。 Active Directoryでユーザーを正しく認証し、背後にあるサーバーにリクエストをプロキシします。ただし、X-Remote-Userヘッダーは追加されません。 REMOTE_USER環境変数が存在しないようです。 AUTH_USERも同様です。
認証済みのユーザー名がどこかにあることは知っていますが、どうすれば取得できますか?
ProxyRequests off
ProxyPass /clsoap/ http://127.0.0.1:12001/clsoap/
<Location /clsoap/>
ProxyPassReverse /clsoap/
AuthName "ADTest"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIDomain primary.example.com
SSPIUsernameCase lower
SSPIOfferBasic Off
Require valid-user
RequestHeader set X-Remote-User "%{REMOTE_USER}e" env=REMOTE_USER
RequestHeader set X-Auth-User "%{AUTH_USER}e" env=AUTH_USER
</Location>
わーい。後で別のランダムなキーワードを試す別のGoogleセッションで、これを見つけました:
http://www.Ruby-forum.com/topic/83067
http://old.nabble.com/Forcing-a-proxied-Host-to-generate-REMOTE_USER-to2911573.html#a2914465
これは今動作します:
ProxyRequests off
ProxyPass /clsoap/ http://127.0.0.1:12001/clsoap/
<Location /clsoap/>
ProxyPassReverse /clsoap/
AuthName "ADTest"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIDomain primary.example.com
SSPIUsernameCase lower
SSPIOfferBasic Off
Require valid-user
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1]
RequestHeader set X-Remote-User "%{RU}e" env=RU
</Location>
私はこれが古い投稿であることを知っていますが、ユーザーがまだこれをヒットしているので、ssl環境 "%{VAR} s"と非ssl環境%{VAR}で使用できる変数には違いがあると思います。 e
私はpubcookieがリモートユーザーを安全な環境変数としてのみ設定し、次のように転送できることを発見しました:
RequestHeader set X-REMOTE-USER %{REMOTE_USER}s
注:eではなくsで終わります!
これは、他のサーバーにリクエストを転送したり、httpを使用したりした場合に、ユーザー名情報をハッカーに漏らす潜在的なセキュリティホールになる可能性があります。私はローカルホストに個人的に転送するだけなので、これは私にとって問題ではありません。