Basic認証

出典: フリー百科事典『ウィキペディア(Wikipedia)』

ベーシック認証 から転送)

Basic認証(ベーシックにんしょう、Basic Authentication)とは、HTTPで定義される認証方式の一つ。

Basic認証では、ユーザ名とパスワードの組みをコロン ":" で繋ぎ、Base64でエンコードして送信する。このため、盗聴や改竄が簡単であるという欠点を持つが、ほぼ全てのWebサーバおよびブラウザで対応しているため、広く使われている。

盗聴や改竄を防ぐため、後にDigest認証というユーザ名とパスワードをMD5でハッシュ化して送る方法が考えられた。

[編集]

典型的なBasic認証におけるHTTPクライアントとHTTPサーバの間の通信を紹介する。

だいたいの流れは以下のようになる。

  1. クライアントは認証が必要なページをリクエストする。しかし、通常ここではユーザ名とパスワードを送っていない。なぜならばブラウザはそのページが認証を必要とするか否か知らないためである。
  2. サーバは401レスポンスコードを返し、認証領域 (authentication realm) や認証方式 (Basic認証) に関する情報をクライアントに知らせる。
  3. ここでクライアントは、認証領域(通常アクセスしているコンピュータやシステムの簡単な説明)をユーザに提示して、ユーザ名とパスワードの入力を求める。ユーザはここでキャンセルすることもできる。
  4. ユーザ名とパスワードが入れられると、クライアントは認証ヘッダを含めたリクエストを再送信する。
  5. 以下の例では、サーバは認証に成功して認証の必要なページのリクエストを処理するが、ユーザ名が不正だったりパスワードが間違っていた時にはサーバが再び401レスポンスコードを返す。このときは、クライアントは再びユーザにユーザ名とパスワードの入力をもとめる。

認証を伴わないリクエスト:

GET /private/index.html HTTP/1.1
Host: example.com

認証が必要であることを示すサーバのレスポンス:

HTTP/1.1 401 Authorization Required
Date: Wed, 11 May 2005 07:50:26 GMT
Server: Apache/1.3.33 (Unix)
WWW-Authenticate: Basic realm="SECRET AREA"
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1

(ここに人間が読めるエラーメッセージが入る)

認証を伴うリクエスト (ユーザ名 "Aladdin"、パスワード "open sesame"):

GET /private/index.html HTTP/1.1
Host: example.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

サーバのレスポンス

HTTP/1.1 200 OK
Date: Wed, 11 May 2005 07:50:26 GMT
(略)

[編集] 関連項目

  • Digest認証
  • RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0
  • RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
  • RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication
他の言語