web-dev-qa-db-ja.com

HTTP_AUTHORIZATION環境変数とは何ですか?

HTTP_AUTHORIZATIONはサーバー側の環境変数のようですが、どのような値にすることができますか?例はありますか?いくつかのHTTPヘッダーによって設定されていますか?

また、ユーザー名とパスワードを要求するときのブラウザー側の外観はどのようになりますか(HTMLフォームか、ユーザー名とパスワードを要求するポップアップボックスか(モーダルであるため、[OK]または[キャンセル]をクリックしない場合は、ブラウザはクリックできません))。

通常、ユーザーログインフォームはPOSTサーバーにPOST

username=peter&password=123

だからこれは何ですかHTTP_AUTHORIZATION 約?

15
nonopolarity

同じページにいるので、典型的なPOSTリクエストは次のようになります。

 POST/some/page HTTP/1.1 <-リクエストライン
ホスト:www.example.com <-------------------\
ユーザーエージェント:Mozilla/5.0(Macintosh; U; Intel Mac OS X 10_6_6; en-US)<-|ヘッダー
 Content-Length:27 <-------------------/
 ...その他のヘッダー... 
 <-空白行
 username = peter&password = 123 <-POSTデータ(ある場合)

HTTP_で始まる環境変数は、 CGIスクリプト が動的コンテンツを提供する主な方法であった時代からの二日酔いであり、サーバー側のコードにクライアントは、リクエストの一部として特定のヘッダーを提供しました。 CGI仕様 から:

使用されるプロトコルがHTTPの場合、名前が「HTTP_」で始まるメタ変数には、クライアント要求ヘッダーフィールドから読み取られた値が含まれます。 HTTPヘッダーフィールド名は大文字に変換され、「-」のすべての出現箇所が「」に置き換えられ、メタを提供するために「HTTP」が先頭に追加されます-変数名。

多くのHTTP認証メカニズムで使用されるAuthorization:ヘッダー。通常のフローは次のとおりです。

  1. ブラウザがページをリクエストしようとします
  2. サーバーは「401Unauthorized」とスキームと(場合によっては)チャレンジを含むWWW-Authenticate:ヘッダーで応答します
  3. ブラウザはユーザーに資格情報の入力を求め、チャレンジへの応答を含むAuthorization:ヘッダーを使用してリクエストを再送信します

チャレンジとレスポンスの正確な形式は、使用されている認証スキームによって異なります。 RFC2617(gpczがリンクしている)は、「基本」(最も一般的で、base64でエンコードされた「ユーザー名:パスワード」を送信)と「ダイジェスト」(暗号化ハッシュを含む)、および [〜#〜] ntlmをカバーしています。 [〜#〜] は、一部のWindows環境で見られるもう1つのものです。

28
SimonJ

HTTP Authorizationヘッダーの詳細な説明は、RFC2617( http://www.ietf.org/rfc/rfc2617.txt 、セクション3.2.2)にあります。

3
gpcz

標準のJoomla!も注目に値するかもしれません。 .htaccessファイルには、リクエストのAuthorizationヘッダーに基づいてHTTP_AUTHORIZATION環境変数を設定するための次のルールが含まれています。

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
0
Nigel B. Peck