セッション有効期限は Okta および OIDC エンタープライズ接続でサポートされていますが、Microsoft Entra ID (Azure AD) 接続では利用できません。Microsoft は Entra ID トークンに
session_expiry クレームを含めていません。session_expiry クレームをサポートしています。有効にすると、Auth0 は上流の ID プロバイダー (IdP) から session_expiry (Unix タイムスタンプを秒単位で表した値) を取得し、アプリケーションに発行する ID トークンに含めます。
Auth0 は session_expiry クレームを使用して、ローカルの Auth0 セッションを上流の IdP のセッションライフサイクルと同期します。これにより、ユーザーのセッションがエンタープライズ IdP で期限切れになると、Auth0 セッションも終了します。
仕組み
session_expiry が有効なエンタープライズ接続を通じて認証されると、Auth0 は次の処理を行います。
- 上流 IdP の ID トークンから
session_expiryクレームを取得します。 - 特定のパラメータを評価してセッションの有効期限を計算し、最終的な Auth0 セッションの有効期限を、次の要素のうち最も早い値に設定します。
- IdP の
session_expiryクレーム: 上流 IDプロバイダーが発行する ID トークンに含まれる絶対タイムスタンプです。 - Auth0 テナントのデフォルトの絶対有効期限設定: Auth0 Dashboard または Management API で設定するセッション有効期間の上限です。詳細については、セッション有効期間設定を構成するを参照してください。
- Auth0 Actions の [
setExpiresAt]: Post-Login Action のapi.session.setExpiresAt()メソッドを使用して、ログイントランザクション中にプログラムで設定したカスタム有効期限タイムスタンプです。
- IdP の
- 有効化時に構成する Post-Login Action を使用して、評価後の最終セッション有効期限をカスタムクレームとして Auth0 発行の ID トークンに注入し、アプリケーションに渡します。
session_expiry クレームは、ユーザーセッションの絶対有効期限を表す秒単位の UNIX タイムスタンプです。
session_expiry クレームは exp の代替ではありません。ID トークン自体の exp は引き続き短い有効期間のままで、変更されません。session_expiry は、トークンのクレームに含まれるセッションレベルの制限です。
session_expiry はログイン時に固定されます。 ユーザーの認証時に一度だけ設定され、トークンを更新しても変更されません。この機能を有効にする前にログインしていたユーザーの既存セッションには、session_expiry は含まれません。このクレームは、次回ログインした後にのみ追加されます。
この機能は、予定されたセッション有効期限のみを対象としています。セッション中にユーザーが退職した場合など、リアルタイムでセッションを取り消すには、バックチャネルログアウト の使用をおすすめします。
セッション有効期限の強制を有効化する
- Auth0 Dashboard
- Management API
- Auth0 Dashboard で、Auth0 Dashboard > Authentication > Enterprise に移動します。
- Okta または OpenID Connect のエンタープライズ接続を見つけ、Browse を選択します。
- 設定する接続を選択します。
- [設定]で、Use ID Token for Session Expiry を有効にします。
- Save を選択します。
セッションの有効期限をアプリケーションに送信する
- Auth0 Dashboard
- Management API
- Auth0 Dashboard で Auth0 Dashboard > Actions > Library に移動し、Build Custom Action を選択します。
- Action の名前を入力し、トリガーとして Login / Post Login を選択して、Create を選択します。
- Action に次のコードを追加します。
- Test パネルで Run を選択し、結果を確認します。
- Deploy を選択します。
- Actions > Triggers に移動し、Post-Login を選択します。
- Action を見つけてログインフローにドラッグし、Apply を選択します。
Auth0 SDK でセッション有効期限を使用する
session_expiry を読み取り、セッションとともに保存します。現在時刻が session_expiry に達するか過ぎると、セッションは期限切れとして扱われます。
ID トークンに
session_expiry クレームを注入するには、Post-Login Action が必要です。設定後にセッションの有効期限が切れると、SDK は他のセッション有効期限の場合と同様に動作し、ユーザーはログイン画面にリダイレクトされます。追加のエラー処理は必要ありません。
アプリケーションにセッションの有効期限の値を追加する
session_expiry を読み取って、セッションの有効期限が近いことをユーザーに警告したり、アプリケーション独自のセッション有効期間をupstream IdPの値に合わせたりできます。
- シングルページアプリ
- 通常のWebアプリ
- モバイル(Swift)
localStorageなどの長期間保持されるストアに session_expiry の値を永続化しないでください。この値は、現在の実時間を基準にした場合にのみ意味を持ちます。
テナントログで確認する
s) イベントを探します。上流IdPのsession_expiryがテナントで設定した絶対セッション有効期間以下の場合、ログエントリにはidp_session_expiryフィールド (秒単位のUnixタイムスタンプ) が含まれます。
session_expiry クレームを送信せずにこの機能を有効にすると、ログインは次のエラーメッセージで失敗します: The upstream Identity Provider did not return a session_expiry claim.
セッション有効期限の強制を無効にする
- Auth0 Dashboard
- Management API
- Auth0 Dashboard の Authentication > Enterprise に移動します。
- 設定する接続を選択します。
- 設定 タブを選択します。
- Use ID Token for Session Expiry を無効にします。
- Save を選択します。