株式会社エスロジカル
株式会社エスロジカル
セキュリティプロダクツ提供
Web開発、システム開発、UNIXシステム構築
個人情報保護方針

技術ドキュメント

技術ドキュメント目次 -> HTTPプロトコル -> Basic認証の動作

本技術ドキュメントは、ここしばらくメンテナンスをしておりません。
内容が古くなっている可能性などございますこと、ご理解を頂けますようお願いいたします。



[オススメ] 国内最安のSSL証明書(RapidSSL 2880円、ジオトラスト 10500円、ベリサイン 39900円)
[オススメ] SSL証明書のアフィリエイトプログラム(最大11700円/1件の報酬を獲得いただけます)

◆ Basic認証の動作

Basic認証で ID/PW によるアクセス制限がされているサイトにアクセス
するとき、クライアント(ブラウザ等)は、リクエストのヘッダの 
Authorization: に ID/PW を格納してリクエストを行っています。

サーバー側では Authorization: ヘッダに記述されている ID/PW を解析し、
その ID/PW が正しいものであればアクセスを許可し、
ID/PW が正しくなければアクセスを許可しない、という制御を行っています。

Basic認証でアクセス制限されたサイトにアクセスするときの流れは、
次のようになります。

1. ユーザーがクライアント(IE等のWebブラウザ)に目的のURLを入力する。
2. クライアントが、Authorization: ヘッダを付加しないで、
   目的のコンテンツにアクセスする。
3. サーバーは、401 Authorization Required のレスポンスを返して、
   クライアントに認証が必要である旨を伝える。
4. クライアントがユーザーに ID/PW の入力を求める
   (IE等のブラウザが、ポップアップウインドウを出して、
    ID/PW の入力をユーザーに求めるアレです。)
5. ユーザーが ID/PW を入力する。
6. クライアントが、Authorization: ヘッダに ID/PW の情報を付加
   して目的のコンテンツに再度アクセスする。
7. サーバが ID/PW を解析して、認証OKであればコンテンツをクライ
   アントに返す。
8. クライアントがコンテンツを表示して、ユーザーがそれを閲覧する。

        +------+  1--->  +--------+  2--->  +-------+
        |      |  <---4  |        |  <---3  |       |
        | User |         | Client |         | httpd |
        |      |  5--->  |        |  6--->  |       |
        +------+  <---8  +--------+  <---7  +-------+

(コンテンツデータを1つ取得するために、リクエスト・レスポンスの
 やりとりが2回行われています。)

なお、
Authorization: ヘッダには、
Basic認証の ID と PW とを :(半角のコロン)でつなげた文字列を、
base64した値が格納さています。
(例えば、
 Authorization: Basic dXNlcjAxOnBhc3N3b3JkCg== といったようになります。)

以下、
/auth/index.html が、user01/password という ID/PW で、Basic認証による
アクセス制限されているとして、telnet コマンドを使用して httpリクエスト
を発生させてみた動作をあげておきます。
どのようなリクエスト・レスポンスのやりとりが行われているか確認してみてください。

Authorization: ヘッダを付加していないアクセス
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET /auth/index.html HTTP/1.0

HTTP/1.1 401 Authorization Required
Date: Mon, 10 Jun 2002 17:12:23 GMT
Server: Apache/1.3.24 (Unix)
WWW-Authenticate: Basic realm="member only"
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>401 Authorization Required</TITLE>
</HEAD><BODY>
<H1>Authorization Required</H1>
This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.<P>
<HR>
<ADDRESS>Apache/1.3.24 Server at ns.gorigori.jp Port 80</ADDRESS>
</BODY></HTML>
Connection closed by foreign host.
#


Authorization: ヘッダを付加したアクセス
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET /auth/index.html HTTP/1.0
Authorization: Basic dXNlcjAxOnBhc3N3b3JkCg==

HTTP/1.1 200 OK
Date: Mon, 10 Jun 2002 17:14:34 GMT
Server: Apache/1.3.24 (Unix)
Last-Modified: Mon, 10 Jun 2002 17:02:03 GMT
ETag: "134b5b-45-3d04db8b"
Accept-Ranges: bytes
Content-Length: 69
Connection: close
Content-Type: text/html

<html>
<head></head>
<body>
This is /auth/index.html
</body>
</html>
Connection closed by foreign host.
#

(dXNlcjAxOnBhc3N3b3JkCg== は user01:password をBASE64した値)




■ HTTPプロトコル についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. この技術ドキュメントへの評価をご選択ください。
大変良い  良い  普通  悪い  大変悪い  ノーコメント

2. ご感想をご自由にお書きください。



自社運営サイト: SSL証明書 / 改ざん検出 / 秘密分散法 / 暗号化ソフト / OpenIDサイト一覧 / IPアドレス表示 / リンク切れチェック / RapidSSL / ジオトラスト / ベリサイン / SSL

Copyright (C) 2006-2008 Slogical Corporation. All Rights Reserved.
ご意見などは、こちらのお問い合わせ用ページ からお願いいたします。

本サイト上の文書で記載または紹介している会社名、商品名は一般に各社の商標または登録商標です。
本サイト上の文書中では、TM マークおよび R マークを明記していない場合があります。