Skip to main content
セッション有効期限は Okta および OIDC エンタープライズ接続でサポートされていますが、Microsoft Entra ID (Azure AD) 接続では利用できません。Microsoft は Entra ID トークンに session_expiry クレームを含めていません。
Auth0 は、Okta および OIDC エンタープライズ接続向けに、Interoperability Profile for Secure Identity in the Enterprise (IPSIE) 標準に基づく session_expiry クレームをサポートしています。有効にすると、Auth0 は上流の ID プロバイダー (IdP) から session_expiry (Unix タイムスタンプを秒単位で表した値) を取得し、アプリケーションに発行する ID トークンに含めます。 Auth0 は session_expiry クレームを使用して、ローカルの Auth0 セッションを上流の IdP のセッションライフサイクルと同期します。これにより、ユーザーのセッションがエンタープライズ IdP で期限切れになると、Auth0 セッションも終了します。
受信した session_expiry クレームを処理し、アプリケーション内のユーザーセッションを終了・管理する責任はお客様にあります。

始める前に

セッション有効期限の適用を有効にする前に、以下を確認してください。
  • Okta または OIDC のエンタープライズ接続がすでに存在している必要があります。
  • 上流のアイデンティティプロバイダーが、ID トークンに session_expiry クレームを含める必要があります。

仕組み

ユーザーが session_expiry が有効なエンタープライズ接続を通じて認証されると、Auth0 は次の処理を行います。
  1. 上流 IdP の ID トークンから session_expiry クレームを取得します。
  2. 特定のパラメータを評価してセッションの有効期限を計算し、最終的な Auth0 セッションの有効期限を、次の要素のうち最も早い値に設定します。
    • IdP の session_expiry クレーム: 上流 IDプロバイダーが発行する ID トークンに含まれる絶対タイムスタンプです。
    • Auth0 テナントのデフォルトの絶対有効期限設定: Auth0 Dashboard または Management API で設定するセッション有効期間の上限です。詳細については、セッション有効期間設定を構成するを参照してください。
    • Auth0 Actions の [setExpiresAt]: Post-Login Action の api.session.setExpiresAt() メソッドを使用して、ログイントランザクション中にプログラムで設定したカスタム有効期限タイムスタンプです。
  3. 有効化時に構成する Post-Login Action を使用して、評価後の最終セッション有効期限をカスタムクレームとして Auth0 発行の ID トークンに注入し、アプリケーションに渡します。
session_expiry クレームは、ユーザーセッションの絶対有効期限を表す秒単位の UNIX タイムスタンプです。
session_expiry クレームは exp の代替ではありません。ID トークン自体の exp は引き続き短い有効期間のままで、変更されません。session_expiry は、トークンのクレームに含まれるセッションレベルの制限です。 session_expiry はログイン時に固定されます。 ユーザーの認証時に一度だけ設定され、トークンを更新しても変更されません。この機能を有効にする前にログインしていたユーザーの既存セッションには、session_expiry は含まれません。このクレームは、次回ログインした後にのみ追加されます。
この機能は、予定されたセッション有効期限のみを対象としています。セッション中にユーザーが退職した場合など、リアルタイムでセッションを取り消すには、バックチャネルログアウト の使用をおすすめします。

セッション有効期限の強制を有効化する

Auth0 Dashboard または Management API を使用して、エンタープライズ接続のセッション有効期限の強制を設定します。
  1. Auth0 Dashboard で、Auth0 Dashboard > Authentication > Enterprise に移動します。
  2. Okta または OpenID Connect のエンタープライズ接続を見つけ、Browse を選択します。
  3. 設定する接続を選択します。
  4. [設定]で、Use ID Token for Session Expiry を有効にします。
  5. Save を選択します。

セッションの有効期限をアプリケーションに送信する

Auth0 は算出したセッションの有効期限を使用して独自のセッションレイヤーを管理しますが、ダウンストリームアプリケーションでもローカルのセッション制限を適用するため、この絶対的な有効期限を把握する必要がある場合があります。Post-Login Action を設定して、最終的に確定したセッションの有効期限を Auth0 発行の ID トークンにカスタムクレームとして追加し、そのトークンをアプリケーションに渡します。
  1. Auth0 Dashboard で Auth0 Dashboard > Actions > Library に移動し、Build Custom Action を選択します。
  2. Action の名前を入力し、トリガーとして Login / Post Login を選択して、Create を選択します。
  3. Action に次のコードを追加します。
  1. Test パネルで Run を選択し、結果を確認します。
  2. Deploy を選択します。
  3. Actions > Triggers に移動し、Post-Login を選択します。
  4. Action を見つけてログインフローにドラッグし、Apply を選択します。

Auth0 SDK でセッション有効期限を使用する

Auth0 SDK を使用し、前述の Post-Login Action を設定している場合、セッション有効期限は自動的に適用されます。SDK はログイン時に ID トークンから session_expiry を読み取り、セッションとともに保存します。現在時刻が session_expiry に達するか過ぎると、セッションは期限切れとして扱われます。 ID トークンに session_expiry クレームを注入するには、Post-Login Action が必要です。設定後にセッションの有効期限が切れると、SDK は他のセッション有効期限の場合と同様に動作し、ユーザーはログイン画面にリダイレクトされます。追加のエラー処理は必要ありません。

アプリケーションにセッションの有効期限の値を追加する

任意の手順として、アプリケーションにセッションの有効期限の値を追加できます。たとえば、アプリケーションで session_expiry を読み取って、セッションの有効期限が近いことをユーザーに警告したり、アプリケーション独自のセッション有効期間をupstream IdPの値に合わせたりできます。
読み取るたびに再検証することなく、CookieやlocalStorageなどの長期間保持されるストアに session_expiry の値を永続化しないでください。この値は、現在の実時間を基準にした場合にのみ意味を持ちます。

テナントログで確認する

セッション有効期限の強制を有効にした後、テナントログを確認して、セッション有効期限が正しく機能していることを検証します。 Auth0 Dashboard > Monitoring > Logsに移動し、設定したエンタープライズ接続を介して認証されたユーザーのログイン成功 (s) イベントを探します。上流IdPのsession_expiryがテナントで設定した絶対セッション有効期間以下の場合、ログエントリにはidp_session_expiryフィールド (秒単位のUnixタイムスタンプ) が含まれます。
IdP が session_expiry クレームを送信せずにこの機能を有効にすると、ログインは次のエラーメッセージで失敗します: The upstream Identity Provider did not return a session_expiry claim.

セッション有効期限の強制を無効にする

  1. Auth0 Dashboard の Authentication > Enterprise に移動します。
  2. 設定する接続を選択します。
  3. 設定 タブを選択します。
  4. Use ID Token for Session Expiry を無効にします。
  5. Save を選択します。

詳細情報