HTTP基本認証(エイチティーティーピーキホンニンショウ)とは | 意味や読み方など丁寧でわかりやすい用語解説
HTTP基本認証(エイチティーティーピーキホンニンショウ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
HTTP基本認証 (エイチティーティーピーキホンニンショウ)
英語表記
HTTP Basic Authentication (エッチティーティーピー ベーシック オーセンティケーション)
用語解説
HTTP基本認証とは、WebサーバがWebブラウザなどのHTTPクライアントを認証するための、HTTPプロトコルに組み込まれた最も基本的な認証方式の一つである。これは、特定のWebページやファイルといったリソースへのアクセスを制限する際に用いられ、ユーザー名とパスワードの組み合わせによって、正当なアクセス権限を持つユーザーかを確認する仕組みを提供する。その実装のシンプルさから広く利用されているが、その仕組みを深く理解し、特にセキュリティ上の注意点を認識した上で利用することがシステムエンジニアを目指す上で重要となる。
HTTP基本認証の動作フローは以下のようになる。まず、クライアントがアクセス制限されたリソース、例えばパスワード保護されたWebページやファイルにアクセスを試みるところから始まる。Webサーバはそのリソースへのアクセスが認証を必要とすることを検知すると、通常のWebページデータではなく、HTTPステータスコード「401 Unauthorized」(認証がされていない)と、「WWW-Authenticate」というHTTPヘッダを含むレスポンスをクライアントに送り返す。この「WWW-Authenticate」ヘッダには、サーバが要求する認証タイプが「Basic」であることと、認証の対象となる範囲を示す「レルム」(realm)と呼ばれる情報が含まれる。レルムは、認証が必要なWebサイトやリソースのグループ名のようなもので、ユーザーに対して「どの領域へのアクセスに認証が必要なのか」を視覚的に伝える役割を持つ。
この401レスポンスを受け取ったクライアント、多くの場合Webブラウザは、ユーザー名とパスワードの入力を求めるダイアログボックスをユーザーに表示する。ユーザーがここに自身の認証情報を入力して送信すると、クライアントはその情報を特定の形式で処理する。具体的には、「ユーザー名:パスワード」という形式で結合し、その全体をBase64というエンコード方式で符号化する。例えば、「user:password」は「dXNlcjpwYXNzd29yZA==」のような文字列に変換される。そして、クライアントはこのBase64エンコードされた文字列を「Authorization」というHTTPヘッダに含めて、再度Webサーバへリクエストを送信する。
Webサーバは、この「Authorization」ヘッダからエンコードされた認証情報を抽出し、Base64デコードして元のユーザー名とパスワードに戻す。その後、サーバは自身の持つユーザーデータベースや設定ファイルなどと照合し、受け取った認証情報が正しいかどうかを検証する。認証が成功した場合、サーバはクライアントが要求したリソースを通常のHTTPレスポンスとして返し、アクセスが許可される。一方、認証が失敗した場合は、再度401 Unauthorizedレスポンスを返すか、別のエラーページを表示してアクセスを拒否する。一度認証に成功すると、クライアント(ブラウザ)は通常、その認証情報をキャッシュし、そのセッション中、同じレルム内のリソースへのアクセス要求があれば、自動的にこの認証情報を「Authorization」ヘッダに含めて送信し続ける。
ここで特に重要なのが、認証情報のエンコード方式であるBase64について理解することだ。Base64はデータを特定の文字セット(A-Z, a-z, 0-9, +, /, =)に変換するエンコード方式であり、データを「暗号化」するものではないという点を強調しておく。Base64でエンコードされたデータは、少しの知識があれば誰でも簡単に元の文字列にデコードできてしまう。このため、HTTP基本認証が通常の「HTTP」プロトコルで利用された場合、認証情報がネットワーク上を平文に近い状態で流れることになる。もし悪意のある第三者が通信経路を盗聴(パケットキャプチャ)した場合、彼らはこのBase64エンコードされた認証情報を容易に傍受し、デコードするだけでユーザー名とパスワードを不正に入手できてしまう。これは、セキュリティ上の重大な脆弱性となる。
この脆弱性を克服し、HTTP基本認証を安全に利用するためには、必ず「HTTPS」プロトコルと組み合わせて使用する必要がある。HTTPSは、SSL/TLSという暗号化プロトコルを利用してHTTP通信全体を暗号化する。これにより、クライアントとサーバ間でやり取りされるすべてのデータ、もちろんHTTP基本認証で送信される認証情報も含む、がネットワーク上を流れる際に暗号化されるため、たとえ通信が盗聴されたとしても、第三者がその内容を読み取ることは極めて困難になる。したがって、HTTP基本認証は、HTTPSによる通信路の暗号化とセットで初めて、実用的なセキュリティレベルを確保できると認識すべきである。
また、HTTP基本認証には厳密な意味での「ログアウト」機能が存在しないという特性も理解しておく必要がある。一度認証に成功すると、ブラウザは認証情報をキャッシュし続けるため、例えば共有PCで利用者が認証したままブラウザを閉じずに席を離れた場合、後にそのPCを利用する別の人物が、意図せず認証済みの状態のままアクセス制限されたWebサイトにアクセスできてしまう可能性がある。ログアウトを実現するには、ブラウザを閉じるか、Webサーバ側で認証キャッシュを無効にする特別な設定を行うなどの対策が必要となる。
HTTP基本認証の利点は、その実装の容易さにある。Webサーバ側の設定ファイルを数行編集するだけで簡単に導入できる場合が多く、特別なアプリケーション開発が不要であるため、手軽にアクセス制限をかけたい場合に非常に有効だ。また、HTTPプロトコルの標準機能であるため、Webブラウザを含むほとんどのHTTPクライアントが特別な設定なしにサポートしている点も利点として挙げられる。しかし、セキュリティ上の脆弱性(HTTPSなしの場合)とログアウト機能の不足という欠点を考慮し、利用する環境と目的を十分に検討した上で適用することが肝要である。