apacheでhttpd.confに認証の設定をして、

あるディレクトリ以下では認証が必要になるようにしたのですが、
この際、
初めそのディレクトリを訪れたときには、
パスワードなどを要求されたのですが、
2度目以降は要求されませんでした。

私はfirefoxを使っているので、
プライバシー情報の認証済みのセッションを消すと、
再度パスワードを要求されました。

このセッションというものは、
クッキーとはちがうものなのでしょうか。
わかりやすく教えていただけると助かります。

回答の条件
  • 1人3回まで
  • 登録:2007/05/23 14:59:17
  • 終了:2007/05/30 16:56:26

回答(5件)

id:inokuni No.1

いのくに回答回数1343ベストアンサー獲得回数212007/05/23 15:49:52

ポイント20pt

Basic認証で2度目以降は要求されないとのことですが、ブラウザのすべてのウインドウを閉じてから再度接続すると、ダイアログが表示されると思います。

Basic認証は ユーザ名 と パスワード だけで認証するものですが、Cookie には他にも色々な情報を記録することができます。

使っている分には似ているようにも思えますが、内部的には異なるものです。

id:the_yakisoba

内部的にどう異なるのかをセッションの仕組みを交えて教えていただけると助かります。

2007/05/23 17:26:30
id:onigirin No.2

onigirin回答回数327ベストアンサー獲得回数232007/05/23 16:35:43

ポイント20pt

セッションは、クッキーとは微妙に違っていて、

ものすごく簡単にいうと、

「ブラウザを閉じるまで」

と考えるとわかりやすいかもしれません。


なので、BASIC認証の場合、

認証した後は何度そのサイトを訪れても認証済みであり、

ブラウザを閉じるとセッション終了のため

認証情報も消える、というイメージです。

一度ブラウザを閉じて再度開くと、

恐らく認証フォームが出てくると思います。


その認証期間を長くするために、クッキーを使う、

と考えればイメージしやすいかもしれませんね。

(厳密にはズバリこうではないのですが・・・)

id:the_yakisoba

セッションは、クッキーとのしくみはどのように異なるのでしょうか??

2007/05/23 17:26:55
id:worstman No.3

最低人間回答回数121ベストアンサー獲得回数62007/05/23 18:05:46

ポイント20pt

簡単にまとめるとこういうことです。


BASIC認証

1、クライアントがサーバにアクセスする

2、サーバはクライアントに「認証が必要ですよ」と伝える

3、クライアントは認証ヘッダを含めたリクエストをもう一回送る

4、認証される

5、ブラウザを閉じない限り認証ヘッダは保存されるので次にアクセスする時はその認証ヘッダを自動的に送る


cookie認証

1、クライアントがサーバにアクセスする

2、パスワード要求される(通常form)

3、クライアントはパスワードを入れる

4、サーバはそのパスワードをクライアント側にcookieとして保存するように要求する

5、クライアント側がcookie保存を許可していれば、クライアント側にcookieが保存される

6、次にアクセスしたときにクライアントはその「cookie」の情報をついでに送信する

7、サーバはそれを受け取って処理する


ややこしいですが「ブラウザが閉じられるまでメモリ上にパスワードを保存する」のがBASIC認証、「テキストファイルとしてパスワードが保存される」のがcookieというのが一番の違いかもしれません。


「色んな人が利用するパソコン」からアクセスする場合、ブラウザを閉じればよいだけのBASIC認証の方がセキュリティとしては適しています。


「自分一人だけが使っているパソコン」からアクセスする場合、認証がローカルに保存されるcookieのほうが便利、というわけです。


なぉ、さらにややこしいですが「認証のセッションの保存」と「セッション管理」はまたさらに違うのでお間違えの無きよう。

id:inokuni No.4

いのくに回答回数1343ベストアンサー獲得回数212007/05/23 18:22:14

ポイント20pt

Basic認証も Cookie も通常はブラウザに表示されない HTTP プロトコルのヘッダーという部分で情報のやり取りをしていますので、その部分を覗いていただければ違いが分かります。

認証を伴わないリクエスト(パソコン→サーバ)

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
(略)

↑の HTTP/1.1 401 Authorization Required とか Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== とかが該当する部分です。


クライアントのリクエスト (パソコン→サーバ)

GET / HTTP/1.0
Host: example.com
Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2;

サーバーのレスポンス (サーバ→パソコン)

HTTP/1.0 200 OK
Cache-Control: private
Content-Type: text/html
Set-Cookie: PREF=ID=72c1ca72230dea65:LD=ja:TM=1113132863:LM=1113132863:S=nNO7MIp
W2o7Cqeu_; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.co.jp
Server: GWS/2.1
Date: Sun, 10 Apr 2005 11:34:23 GMT
Connection: Close

<html><head><meta http-equiv="content-type" content="text/html; charset=Shift_JI
S"><title>Google</title><style><!--
・・・以下省略

↑の Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2; とか Set-Cookie: PREF=ID=72c1ca72230dea65:LD=ja:TM=1113132863:LM=1113132863:S=nNO7MIp とかが該当する部分です。


参考

id:onigirin No.5

onigirin回答回数327ベストアンサー獲得回数232007/05/24 04:32:35

ポイント20pt

セッションとクッキーの違いは、

それぞれの詳細説明のページを載せておきます。

http://e-words.jp/w/E382BBE38383E382B7E383A7E383B3.html

http://e-words.jp/w/E382AFE38383E382ADE383BC.html

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません