セッション管理

 

セッション(session)とは

セッション(session)とは、ブラウザ(クライアント)がサーバへアクセスを開始してから切断するまでの一連の関連性のある処理の流れのこと。 アクセス中の(セッションでの)ユーザのログイン状態や処理状況などを管理する仕組みのことを「セッション管理」と呼ぶ。

セッション管理の方法

セッション管理の方法としては、「Cookie」と「セッションID」と「セッション変数」を利用した方式が一般的。
サーバは個々のブラウザを識別するために「セッションID」と呼ばれる一意の識別子を生成する。
生成したセッションIDを Cookie を利用してブラウザ側に送信する。
セッション中で保持すべき情報は、セッションIDと紐づけてWebサーバ側で格納される。
格納されるキーと値の形式の情報を「セッション変数」と呼ぶ。
 

セッション管理(セッションベース認証)の動作フロー

  1. ブラウザはサーバにリクエストを送信する。
  1. サーバは個々のブラウザを識別するために「セッションID」と呼ばれる一意の識別子を生成し、ブラウザへ送信する。
  1. ブラウザは以降のセッションでCookieでセッションIDを送信する
  1. サーバはセッションIDに紐付く情報(セッション変数)を参照し、動的なレスポンスを返す。
 

Cookieとセッション変数の比較

Cookieセッション変数
情報保存場所クライアント(ブラウザ)側サーバ側
情報保持期間永続保持可能セッション終了(ログアウト・ブラウザ終了)時に削除
サイズ制限制限あり制限なし
ユーザによる情報参照・改変可否×

セッションベース認証とトークンベース認証の違い

前章で説明したセッションベース認証とは別の認証方法として「トークンベース認証」をという手法がある。
セッションIDとトークンの特徴の違いは以下の表の通り。
セッションIDトークン
ステートフルステートレス
ユーザ情報と紐付けされるユーザ情報と紐付けされない