セッション管理
セッション(session)とは
セッション(session)とは、ブラウザ(クライアント)がサーバへアクセスを開始してから切断するまでの一連の関連性のある処理の流れのこと。
アクセス中の(セッションでの)ユーザのログイン状態や処理状況などを管理する仕組みのことを「セッション管理」と呼ぶ。
セッション管理の方法
セッション管理の方法としては、「Cookie」と「セッションID」と「セッション変数」を利用した方式が一般的。
サーバは個々のブラウザを識別するために「セッションID」と呼ばれる一意の識別子を生成する。
セッション中で保持すべき情報は、セッションIDと紐づけてWebサーバ側で格納される。
格納されるキーと値の形式の情報を「セッション変数」と呼ぶ。
セッション管理(セッションベース認証)の動作フロー
- ブラウザはサーバにリクエストを送信する。
- サーバは個々のブラウザを識別するために「セッションID」と呼ばれる一意の識別子を生成し、ブラウザへ送信する。
- ブラウザは以降のセッションでCookieでセッションIDを送信する
- サーバはセッションIDに紐付く情報(セッション変数)を参照し、動的なレスポンスを返す。
Cookieとセッション変数の比較
Cookie | セッション変数 | |
---|---|---|
情報保存場所 | クライアント(ブラウザ)側 | サーバ側 |
情報保持期間 | 永続保持可能 | セッション終了(ログアウト・ブラウザ終了)時に削除 |
サイズ制限 | 制限あり | 制限なし |
ユーザによる情報参照・改変可否 | ○ | × |
セッションベース認証とトークンベース認証の違い
前章で説明したセッションベース認証とは別の認証方法として「トークンベース認証」をという手法がある。
セッションIDとトークンの特徴の違いは以下の表の通り。
セッションID | トークン | |
---|---|---|
ステートフル | ステートレス | |
ユーザ情報と紐付けされる | ユーザ情報と紐付けされない |