メインコンテンツへスキップ

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

このワークフローでは、複数サイトにまたがるセッション管理をサポートするための 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トークンとアクセストークンは、必要に応じて取得できるよう、 とスコープの値をキーにしたペアとして保存されます。 また、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 クッキー (有効期限付き) が設定される
  5. トークン交換が行われる
初回認証フローの図

Auth0 セッションを維持する

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

シームレス SSO

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

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

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

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

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

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

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

長期セッション

Auth0 は、エンタープライズプラン向けに長期セッションをサポートしています。長期セッションでは、最大 100 日間の非アクティブ期間 (アイドルタイムアウト) と、合計で最大 1 年の継続期間 (絶対タイムアウト) を上限としてセッション制限を設定できます。四半期単位や月次などの運用サイクルがある場合、これによりエンドユーザーの負担を軽減し、リスクの低いコンテンツや機能へのアクセスを提供できます。さらに、メディア企業では、長期セッションを活用してコンテンツへのシームレスなアクセスを実現し、ユーザー体験を向上させることができます。また、ユーザー体験とセキュリティに関する要件に応じて、長期セッションとパスワード検証を使い分けることもできます。 長期セッションでは、通常、アプリケーションセッションは シングルサインオン (SSO) セッションより短くなるため、ワークフローの詳細は変わります。 詳しくは、セッションの有効期間制限を設定するアクセストークンの有効期間を更新する を参照してください。

詳細はこちら