web-dev-qa-db-ja.com

Apacheプロキシ:REMOTE_USERをバックエンドサーバーに渡す

認証にはシボレスを使用しています。シボレスサービスプロバイダーは、リバースプロキシ構成(mod_proxy)でApacheを実行しているホストで実行されています。 shibbolethを使用するアプリケーションはバックエンドで実行されており、これらのサーバーにはSPがインストールされていません。バックエンドサーバーですべてのshibbolethヘッダーを取得しています。

ここで、プロキシサーバーでshibboleth認証によって入力されるREMOTE_USER変数を、バックエンドサーバーで使用できるようにする必要があります。値をHTTP_REMOTE_USERに取得してバックエンドサーバーに渡すことができましたが、この値をバックエンドサーバーのREMOTE_USERに入れるのに苦労しています。

HTTP_REMOTE_USERとREMOTE_USERの違いと、実際の認証を行わずにApache構成からREMOTE_USERを操作する方法を知りたいです。

2
Wouter

シボレスであなたとまったく同じことをしたかったのです。しかし、残念ながら、これは 対応するApacheドキュメント で見つかりました。 REMOTE_USERはCGI標準の一部であるため、Apacheディレクティブで変更することはできません。

環境操作ディレクティブを使用して、標準のCGI変数をオーバーライドまたは変更することはできません。

0
caguado

バックエンドサーバーに送信されるクエリ文字列でREMOTE_USERの値を送信できます。

RewriteCond %{LA-U:REMOTE_USER} (.*)
RewriteRule ^/test.asp(.*) test.asp?userid=%{LA-U:REMOTE_USER} [QSA,P,L] 

LA-Uは先読みを意味します。 mod_rewriteマニュアル から:

%{LA-U:variable}は、変数の最終値を決定するために内部(URLベース)サブリクエストを実行する先読みに使用できます。これは、現在の段階では使用できないが、後のフェーズで設定される書き換え用の変数にアクセスするために使用できます。

たとえば、サーバーごとのコンテキスト(httpd.confファイル)内からREMOTE_USER変数に従って書き換えるには、%{LA-U:REMOTE_USER}を使用する必要があります。この変数は、URL変換後に行われる承認フェーズによって設定されます。フェーズ(mod_rewriteが動作している間)。

0
crb