web-dev-qa-db-ja.com

Apacheの下で認証されたユーザーを取得する

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>
7
brofield

わーい。後で別のランダムなキーワードを試す別の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>
7
brofield

私はこれが古い投稿であることを知っていますが、ユーザーがまだこれをヒットしているので、ssl環境 "%{VAR} s"と非ssl環境%{VAR}で使用できる変数には違いがあると思います。 e

私はpubcookieがリモートユーザーを安全な環境変数としてのみ設定し、次のように転送できることを発見しました:

    RequestHeader set X-REMOTE-USER %{REMOTE_USER}s

注:eではなくsで終わります!

これは、他のサーバーにリクエストを転送したり、httpを使用したりした場合に、ユーザー名情報をハッカーに漏らす潜在的なセキュリティホールになる可能性があります。私はローカルホストに個人的に転送するだけなので、これは私にとって問題ではありません。

2
Zack