intra-mart Accel Platform 認証仕様書 第7版 2023-04-01

4.4. セッションタイムアウト

セッションタイムアウトについて説明します。

4.4.1. セッションタイムアウトの概要

ログインユーザが操作中にセッションタイムアウトが発生した場合、継続して利用すると不整合が発生する可能性があります。
そのため、システムでセッションタイムアウトを検知し、「エラー」画面を表示します。
セッションタイムアウトの検知は、Cookie に保存したログイン情報の比較によって行います。
また、ログイン署名の検証により、セッション情報が不正であるかどうかも検証し、セッションタイムアウトと判定します。
対象の画面が未認証ユーザにもアクセス可能な画面だった場合でも、セッション状態が変更されたことを通知するため、同様に「エラー」画面が表示されます。

4.4.2. セッションタイムアウトの機能

セッションタイムアウトの機能について説明します。

4.4.2.1. セッションタイムアウトの検出

intra-mart Accel Platform では以下のフローに従いセッション情報を検証し、セッションタイムアウトの検出を行います。
../../_images/session-timeout-flow.png

図 セッションタイムアウト検出フロー

No. チェック内容 詳細
1 静的ファイルチェック Webサーバで扱う静的ファイルは対象外のため、セッションが有効であると判定します。
2 セッションIDチェック Cookie にセッションIDがない場合、初回アクセス(ログインしていない状態)のため、セッションが有効であると判定します。
3 対象外URLチェック
システムで扱う一部のURLはセッションタイムアウトを検出する必要がないため、セッションが有効であると判定します。
(対象外とするURLは、設定ファイルにより追加することが可能です。詳細は「セッションタイムアウト対象外URLの指定 」を参照してください)
4 Cookie のログイン情報書式チェック Cookie にログイン情報が設定されているが、正しい書式で設定されていない場合、システムエラーとします。
5 ログイン署名チェック Cookie のログイン情報とアカウントコンテキストのログイン署名が異なる場合、セッションタイムアウトとして判定します。
6 ログイン日時チェック Cookie のログイン情報とアカウントコンテキストのログイン日時が異なる場合、セッションタイムアウトとして判定します。
7 AccountContext チェック アカウントコンテキストのユーザを特定する情報とログイン署名が不整合な場合、セッションタイムアウトとして判定します。
検出フローを元にセッションタイムアウトと判定された場合、以下のフラグが設定されます。
AccountContext 不正フラグ
  • 説明
    • 「7. AccountContext チェック」にてログイン署名が不正であると判定された場合に設定されます。
    • このフラグは将来的に利用する目的の情報です。
  • フラグの設定先
    • リクエスト属性
  • キー名
    • jp.co.intra_mart.session.context.invalid
システム管理者フラグ
  • 説明
    • アクセス前のユーザが、システム管理者でログイン中だった場合に設定されます。
    • 2018 Summer(Tiffany) 以降、セッションタイムアウト後の遷移先(一般ユーザのログイン画面、または、システム管理者のログイン画面)の判断に利用します。
  • フラグの設定先
    • リクエスト属性
  • キー名
    • jp.co.intra_mart.session.cookie.administrator

4.4.2.2. セッションタイムアウトエラー画面の表示

セッションタイムアウトが発生した場合、以下の例外が発生します。
jp.co.intra_mart.foundation.security.filter.exception.SessionTimeoutException
SessionTimeoutException 発生時、web.xml のエラーハンドリング設定に従って、以下のエラー画面に遷移します。
%CONTEXT_PATH%/alert/session_timeout_error.jsp

注意

2018 Spring(Skylark) 以前の場合、この画面では、システム管理者でログイン中にセッションタイムアウトが発生した場合も、一般ユーザの「ログイン」画面へ遷移するボタンが表示されます。
なお、セッションタイムアウトを検出しても、セッションの初期化は行われません。
アプリケーションサーバでセッションタイムアウトが発生した場合、セッションの初期化が行われていますが、セッション情報の不整合であった場合、そのまま別の画面にアクセスしても再度「セッションタイムアウトエラー」画面が表示されます。
ログイン画面へ一度遷移することでセッションの初期化が行われるため、ログインし直す必要があります。

4.4.2.3. セッションタイムアウト対象外URLの指定

セッションタイムアウト対象外とするURLは、「セッション情報チェック設定」に定義することで追加することができます。
設定方法の詳細は、「 設定ファイルリファレンス 」 - 「 認証機能 」 -「 セッション情報チェック設定 」を参照してください。

コラム

以下のURLはシステムデフォルトのURLとして、セッションタイムアウトの対象外です。
名称 URL
システム管理者ログイン画面アクセスURL /system/login
システム管理者ログイン実行URL /system/certification
一般ユーザログイン画面アクセスURL /login
一般ユーザログイン実行URL /certification
ログアウト実行URL /logout

コラム

URLの検証には、 HttpServletRequest クラスの getServletPath() を利用して取得したパスに対して実行します。