Basic認証では、ユーザ名とパスワードの間にコロン(:)をはさみ、それをBase64でエンコードし 送信します。ユーザ名とパスワードは、平文で送信されるためパスワードが漏れてしまう可能 性があります。
Basic認証では、レスポンスコードとHTTPヘッダがポイントとなります。
クライアントが認証の必要なページにリクエストすると、サーバは401レスポンスコードを返して きます。レスポンスコード4xxは、クライアント側のさまざまなエラーを表しています。今回の401 は、Unauthorizedというエラーを返しクライアント(ブラウザ)は認証が必要だということを知ります。
クライアントが受ける401のレスポンスには、本体も含まれキャンセルした時に表示されます。
HTTP/1.1 401 Authorization Required Date: Mon, 05 Dec 2005 22:13:23 GMT Server: Apache/1.3.24 (Unix) WWW-Authenticate: Basic realm="auth area" Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html lang="ja" <head> <title>401 Authorization Required</title> </head> <body> </body> </html>
ヘッダ内のWWW-Authenticate: Basic realm="auth area"からわかるようにクライアントは 認証方式がBasicであることや認証領域(authentication realm)を知り認証用のダイアログ を表示します。
認証が必要なことがわかったので、ユーザ名とパスワードをBase64でエンコードしてAuthorization ヘッダを付加してサーバにリクエストします。(例では、bnote:passをエンコード)
Authorization: Basic Ym5vdGU6cGFzcw==
ユーザ名とパスワード正しければリクエストに対してレスポンスコード200で返してきます。 正しくない場合、もう一度レスポンスコード401が返り認証を繰り返します。
サーバは、Authorizationヘッダがあるかないかとユーザ名パスワードがあっているかを 確認する。なければ401を返す。
クライアントは、401が来たらユーザ名とパスワードを受け付ける。Authorizationヘッダに ユーザ名とパスワードをBase64でエンコードして一緒に送信する。
Copyright 1997-2008 BBB All rights reserved.