有効期間の短いセッション
このワークフローでは、複数サイトのセッション管理をサポートするために 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.js の onRedirectCallback 関数がこの値を取り出して、認証完了後にユーザーをリダイレクトします。
トークンの保存
返されたトークンをできるだけ安全に保持するため、すべてのトークンはローカルキャッシュに保存されます。ID トークンとアクセストークンはペアで保存され、必要に応じてトークンを取得できるよう、 と scope の値が使用されます。 さらに、ID トークンまたはアクセストークンのいずれかが期限切れになると、キャッシュ内のトークンは削除されます。したがって、トークンがキャッシュ内に存在する場合は、まだ有効であると見なせます。API を呼び出す
getTokenSilently() メソッドは、まずトークンキャッシュを利用し、キャッシュがない場合は非表示の iframe を使って新しいトークンを取得します。そのため、API へのすべてのリクエストでこのメソッドを使って Bearer トークン用のヘッダーを組み立てることができ、期限切れのトークンに対応するための追加ロジックは不要です。
Quickstart では、ExternalService ビューがこの機能を使って express API にリクエストを送信します。
ユーザーにセッションの継続を促す警告を表示する
ユーザーが Auth0 セッションの更新につながる操作を何も行っていない場合、Auth0 は、ユーザーに警告を表示し、明示的にセッションを継続するかどうかを選択させることを推奨しています。 この方法は、ユーザーがその場を離れている場合にはセッションを非アクティブにできる一方で、ユーザーがまだ操作中であれば、サイレントなトークン更新をトリガーして、資格情報の再入力を求められることなくセッションを継続できるようにするものです。 非アクティビティタイマーとタイムアウトモーダルの詳細については、アプリケーション固有のログアウト URL を参照してください。ワークフローの例
- 初回認証
- Auth0 セッションの維持
- シームレスな SSO
- ユーザーにセッション延長を促す
- ユーザーがアプリケーションから明示的にログアウトする
- ログアウト後にユーザーが元のアプリケーションに戻る
初回認証
- 新しいタブが開く
- ログインが求められる
- ユーザーが資格情報を入力する
- SSO Cookie (有効期限付き) が設定される
- トークン交換が行われる

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

シームレスな SSO
- ユーザーが保護されたルートに移動する
isAuthenticated()で確認する- false の場合、
loginWithRedirect()を実行する

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

ユーザーがアプリケーションから明示的にログアウトする
- ユーザーがログアウトを選択する
-
logout()が呼び出される- トークンキャッシュをクリアする
/oidc/logoutを呼び出す- SSO Cookie をクリアし、セッションデータを削除する
- ユーザーをログアウトページにリダイレクトする

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