Hatena::ブログ(Diary)

oknknicの日記

2012-04-17

セッションの仕組みとログインについて

セッションの仕組みの理解が浅くて気持ち悪くなってきたので、調べてみた。
以下、サーブレット標準に準拠のサーブレットコンテナ上でのアプリケーションに関して記載する。

セッション

  • HTTPはステートレスなプロトコルである
  • セッションは、HTTPでステートフル(1回のリクエストで完結しない場合に、前回のリクエストの情報(ログイン情報や買い物カゴなど)を保持)な処理を実現するための、期間をあらわす概念

セッションID

参考 Java API

ログイン状態保持機能の実現

ベーシック認証の場合で考えてみた。

前提

(※なお、認証を一度通過すれば、トップページ以下のディレクトリへのリクエストには必ず、Authorizationヘッダがブラウザによって付与される)

フロー

1. トップ画面へのリクエスト
2. 「401 Unauthorized」がレスポンスされる
3. ブラウザによってログインダイアログが表示される
4. ユーザが、IDとPWDを入力し、OKボタンを押下する
5. Authorizationヘッダが付与されたリクエストが送信される
6. WEBアプリケーションサーバが認証し、認証通過する
7. サーブレットセッションIDを取得(WEBアプリケーションサーバがIDを新規作成)する
8. WEBアプリケーションサーバによって、レスポンスヘッダにセッションIDが設定される
9. クライアントのクッキーにセッションIDが登録される
10. 他の画面へのリクエスト時は、セッションIDのクッキーがリクエストヘッダに付与される
11. WEBアプリケーションサーバは、リクエストヘッダのセッションIDを、そのリクエストが所属するセッションセッションIDと認識する
12. サーブレットセッションIDを取得すると、上記セッションIDが渡される

参考サイト

参考文献

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/oknknic/20120417/1334673466