Skip to main content

有効期間の短いセッション

このワークフローでは、複数サイトのセッション管理をサポートするために auth0-spa-js SDK をどのように実装すべきかを示します。このシナリオでは、テナントの の非アクティブ タイムアウトが 300 秒に設定され、各 SPA アプリケーションの の有効期限が 150 秒に設定されていることを前提としています。これは「有効期間の短い」セッションと見なされます。

SDKの機能

PKCE フロー

ID トークンまたはを取得するあらゆる方法で、SDK が Proof Key for Code Exchange ワークフローの複雑な処理をすべて担います。これを動作させるために、追加の作業や設定は必要ありません。

ディープリンク

ユーザー体験を向上させるため、SDK には loginWithRedirect() メソッド用の appState パラメーターが含まれています。現在のアプリに関する情報は、Auth サーバーへのリクエストの一部として渡され、認証が成功すると返されます。これにより、ユーザーは途中で中断することなく操作を続けられます。 Quickstart では、PrivateRoute コンポーネントが targetUrl という state パラメーターを設定し、index.jsonRedirectCallback 関数がこの値を取り出して、認証完了後にユーザーをリダイレクトします。

トークンの保存

返されたトークンをできるだけ安全に保持するため、すべてのトークンはローカルキャッシュに保存されます。ID トークンとアクセストークンはペアで保存され、必要に応じてトークンを取得できるよう、 と scope の値が使用されます。 さらに、ID トークンまたはアクセストークンのいずれかが期限切れになると、キャッシュ内のトークンは削除されます。したがって、トークンがキャッシュ内に存在する場合は、まだ有効であると見なせます。

API を呼び出す

getTokenSilently() メソッドは、まずトークンキャッシュを利用し、キャッシュがない場合は非表示の iframe を使って新しいトークンを取得します。そのため、API へのすべてのリクエストでこのメソッドを使って Bearer トークン用のヘッダーを組み立てることができ、期限切れのトークンに対応するための追加ロジックは不要です。 Quickstart では、ExternalService ビューがこの機能を使って express API にリクエストを送信します。

ユーザーにセッションの継続を促す警告を表示する

ユーザーが Auth0 セッションの更新につながる操作を何も行っていない場合、Auth0 は、ユーザーに警告を表示し、明示的にセッションを継続するかどうかを選択させることを推奨しています。 この方法は、ユーザーがその場を離れている場合にはセッションを非アクティブにできる一方で、ユーザーがまだ操作中であれば、サイレントなトークン更新をトリガーして、資格情報の再入力を求められることなくセッションを継続できるようにするものです。 非アクティビティタイマーとタイムアウトモーダルの詳細については、アプリケーション固有のログアウト URL を参照してください。

ワークフローの例

  1. 初回認証
  2. Auth0 セッションの維持
  3. シームレスな SSO
  4. ユーザーにセッション延長を促す
  5. ユーザーがアプリケーションから明示的にログアウトする
  6. ログアウト後にユーザーが元のアプリケーションに戻る

初回認証

  1. 新しいタブが開く
  2. ログインが求められる
  3. ユーザーが資格情報を入力する
  4. SSO Cookie (有効期限付き) が設定される
  5. トークン交換が行われる
初回認証フローの図

Auth0 セッションを維持する

  1. ユーザーが保護されたリソースからデータを取得しようとする
  2. getTokenSilently() が呼び出される
  3. リソースが取得される
  4. ユーザーが保護されたリソースのデータを更新する
  5. getTokenSilently() が呼び出される
    1. iframe が開かれる
    2. トークン交換が行われる
  6. リソースが更新される
セッション維持の図

シームレスな SSO

  1. ユーザーが保護されたルートに移動する
  2. isAuthenticated() で確認する
  3. false の場合、loginWithRedirect() を実行する
セッション向けシームレス SSO フローの図

ユーザーにセッション延長を促す

  1. 240秒時点で、60秒間表示されるモーダルを表示し、セッションを維持するかどうかをユーザーに確認します
  2. 維持を選択した場合は、getTokenSilently() を実行します
ユーザーにセッション維持を促す図

ユーザーがアプリケーションから明示的にログアウトする

  1. ユーザーがログアウトを選択する
  2. logout() が呼び出される
    1. トークンキャッシュをクリアする
    2. /oidc/logout を呼び出す
    3. SSO Cookie をクリアし、セッションデータを削除する
    4. ユーザーをログアウトページにリダイレクトする
ユーザーがログアウトする際の図

ログアウト後にユーザーが元のアプリケーションに戻る

  1. ユーザーが保護されたリソースにデータをリクエストする
  2. getTokenSilently() が呼び出される
  3. アプリケーションごとに動作が異なる
ログアウト後にユーザーが元のアプリケーションに戻る図

長期間のセッション

Auth0 はエンタープライズプランで長期間のセッションをサポートしています。長期間のセッションでは、非アクティブ状態の許容期間を最大 100 日間 (アイドルタイムアウト) 、セッション全体の継続期間を最大 1 年間 (絶対タイムアウト) まで設定できます。四半期ごとや月ごとなどのサイクルがある場合、これによりエンドユーザーの負担を軽減し、リスクの低いコンテンツや機能へのアクセスを提供できます。さらに、メディア企業は、コンテンツへシームレスにアクセスできるようにすることで、ユーザーエクスペリエンスの向上に長期間のセッションを活用できます。また、ユーザーエクスペリエンスとセキュリティに関する要件に応じて、長期間のセッションとパスワードのバリデーションのどちらを採用するか選択することもできます。 長期間のセッションでは、ワークフローの詳細が変わります。この場合、アプリケーションセッションは シングルサインオン (SSO) セッションより短くなる可能性が高くなります。 詳細については、Configure Session Lifetime LimitsAccess Token Lifetime を更新する を参照してください。