HTTP認証 概要


今更ながら、HTTPで用いられる認証方式の概要をまとめる。

一般的な HTTP 認証の流れ

  1. サーバーは1回目のクライアントからのリクエストに対して、 401 (Unauthorized) レスポンスを返却し、 WWW-Authenticate レスポンスヘッダーを含めて認証方式に関する情報を提供する。

  2. クライアントは Authorization リクエストヘッダーに資格情報を含めることで、サーバーに自身の認証を要求する。

用語

WWW-Authenticate

  • リソースへのアクセスに使用する認証メソッド(Basic,...)を指定する。
  • このヘッダーを参照し、クライアントは資格情報の提供方法を認識する。
WWW-Authenticate: <type> realm=<realm>
  • <type>:認証方式名。Basicなどが指定される。
  • realm :保護領域を説明する。これは、「本番アプリへのアクセスである」などをメッセージに設定することで、ユーザーが、どの領域にアクセスしようとしているかを通知する。

Basic認証

  • Base64 でエンコードした資格情報(IDとパスワード)をAuthorization:Basicヘッダーに付与する方式。
  • 可逆エンコードのため、HTTPSでの送信必須。

Bearer認証

  • OAuth 2.0 で保護されたリソースにアクセスするためのベアラートークンをAuthorization: Bearerで指定する方式。

Digest認証

  • IDとパスワードをMD5でハッシュ(ダイジェスト)化して送る方式

その他、Negotiate認証などいろいろある模様。

参考情報