メインコンテンツまでスキップ

6. 511 ネットワーク認証が必要 (Network Authentication Required)

511 ステータスコードは、クライアントがネットワークアクセスを取得するために認証する必要があることを示します。

レスポンス表現は、ユーザーが資格情報を送信できるリソースへのリンクを含めるべきです (SHOULD) (例えば、HTML フォームで)。

511 レスポンスには、チャレンジやログインインターフェース自体を含めるべきではない (SHOULD NOT) ことに注意してください。これは、ブラウザがログインインターフェースを元々要求された URL に関連付けて表示し、混乱を引き起こす可能性があるためです。

511 ステータスは、オリジンサーバーによって生成されるべきではありません (SHOULD NOT)。これは、ネットワークへのアクセスを制御する手段として介在する傍受プロキシによる使用を目的としています。

511 ステータスコードを持つレスポンスは、キャッシュによって保存されてはなりません (MUST NOT)。

6.1. 511 ステータスコードとキャプティブポータル (Captive Portals)

511 ステータスコードは、要求されたサーバーからのレスポンスを期待しているソフトウェア (特に非ブラウザエージェント) に対して、中間のネットワークインフラストラクチャからではなく、"キャプティブポータル" によって引き起こされる問題を軽減するように設計されています。これは、キャプティブポータルの展開を奨励することを意図したものではなく、それらによって引き起こされる被害を制限することのみを目的としています。

アクセスを許可する前に、何らかの認証、条件の受け入れ、またはその他のユーザー対話を要求したいネットワークオペレーターは、通常、メディアアクセス制御 (MAC) アドレスを使用して、それをまだ行っていないクライアント ("未知のクライアント") を識別します。

その後、未知のクライアントのすべてのトラフィックは、TCP ポート 80 上のトラフィックを除いてブロックされます。これは、未知のクライアントを "ログイン" させるための専用の HTTP サーバー ("ログインサーバー") に送信され、もちろんログインサーバー自体へのトラフィックも含まれます。

例えば、ユーザーエージェントがネットワークに接続し、TCP ポート 80 で次の HTTP リクエストを行う場合があります:

GET /index.htm HTTP/1.1
Host: www.example.com

このようなリクエストを受信すると、ログインサーバーは 511 レスポンスを生成します:

HTTP/1.1 511 Network Authentication Required
Content-Type: text/html

<html>
<head>
<title>Network Authentication Required</title>
<meta http-equiv="refresh"
content="0; url=https://login.example.net/">
</head>
<body>
<p>You need to <a href="https://login.example.net/">
authenticate with the local network</a> in order to gain
access.</p>
</body>
</html>

ここで、511 ステータスコードは、非ブラウザクライアントがレスポンスをオリジンサーバーからのものとして解釈しないことを保証し、META HTML 要素がユーザーエージェントをログインサーバーにリダイレクトします。