ベーシック認証

メモ:  Category:linux

Webにおけるユーザー認証の中で最も標準的なユーザー認証方法がベーシック認証です。

ただし、この認証方法はユーザー名及びパスワードが平文で扱われるため高いセキュリティが要求される場合は、ダイジェスト認証をお勧めします。

ベーシック認証の仕組み

ベーシック認証は、サーバからクライアントへ送信されるヘッダ内の「WWW-Authenticate」ヘッダとクライアントからサーバへ送信される「Authorization」ヘッダによって認証が処理されます。

ベーシック認証の基本的な仕組みを以下に示します。

ベーシック認証の仕組み図解
  1. クライアントからHTTPのリクエストを送信します。
  2. ベーシック認証を行うWebサーバは、クライアントからのリクエストにAuthorizasionヘッダが指定されていないか確認します。Authorizasionヘッダが指定されていない場合、サーバは、「WWW-Authenticate」ヘッダをレスポンスヘッダに指定してレスポンスコード401で送信します。
  3. クライアントは、「WWW-Authenticate」ヘッダを受け取ると認証用の入力を要求します。入力されたユーザー名とパスワードを「Authorization」ヘッダにセットしサーバへ送信します。
  4. サーバは、「Authorization」ヘッダに指定されているユーザー名とパスワードを使用して認証処理をします。認証に成功すれば、要求のあったページを送信します。認証に失敗すると 2. のの送信を実行します。

もし、最初のリクエストでAuthorizationヘッダにユーザー名とパスワードを指定してリクエストしたらどうなるでしょう。これは、ユーザー名とパスワードが正しければサーバにレスポンスコード 401 を返させることなくページの取得ができます。

つまり、Webサーバが行っていることは

  • 認証が必要なページに「Authorization」ヘッダなしでリクエストしてきた場合、「WWW-Authenticate」ヘッダを付けて 401 を返す
  • 認証が必要なページに「Authorization」ヘッダ付きでリクエストしてきた場合、ユーザ名及びパスワードが正しければページ内容を返す

と言うことになります。

bluenote by BBB