2011-09-09 13 views
3

私はjqueryでクロスドメインAJAXを使用しています。途中でローカル転送スクリプトを使用しています。基本認証情報を2番目のドメインに渡す必要があります。 PHPでは、私は$_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW']という単純なプレーンテキストの変数にアクセスできることがわかっているので、転送スクリプトはこの情報を難なく使用できます。Perl相当のPHP_AUTH_PW

私のコントロールできない理由から、私はこのタスクをPerl CGIで実行する必要があります。私は$ENV{REMOTE_USER}があることを知っているが、私は私の人生のためのパスワードを見つける方法を見つけることができません。私は$ENV{HTTP_AUTHORIZATION}を試しましたが、それは常に空白になります。

どのようにして、Perlで基本認証パスワードを読み取ることができますか?または、少なくとも私のCGIが認証ヘッダーを直接読み取るための方法があるので、自分で文字列をbase64でデコードして分割することはできますか?

ありがとうございます!

+0

あなたが提案する前に、mod_perlもオプションではありません。 – Josh

+0

クライアントがAuthorizationヘッダーを送信する前に、401応答を返さなければならないことがわかりますか? – hobbs

+0

実際の認証は、すでにApacheによって細かく処理されています。ブラウザでテスト用Webページに移動すると、ユーザー名とパスワードのポップアップが表示され、スクリプトでREMOTE_USERが正常に表示されます。それは私がCGIレイヤーによってすでにアクセスできない恐れがある、私はどのように取得するのか分からないだけのパスワードです。 – Josh

答えて

1

この記事をチェックする:http://www.besthostratings.com/articles/http-auth-php-cgi.html

ModReWriteを使用して、Http Authorizationヘッダーを環境変数に書き込みます。これでCGIスクリプトにアクセスしてデコードすることができます。

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] 
</IfModule>