短命セッション
このワークフローでは、マルチサイトセッション管理をサポートするためauth0-spa-js SDKをどのように実装するべきかを示します。このシナリオでは、テナント非アクティブタイムアウトは300秒に設定され、各SPAアプリケーションのIDトークン有効期限は150秒に設定されているものとします。これは「短命」セッションとみなされます。SDKの特徴
PKCEフロー
IDトークンまたはアクセストークンを取得するすべての方法について、SDKはProof Key for Code Exchangeワークフローの複雑さをすべて管理します。この機能を利用するための追加の操作や設定はありません。ディープリンク
ユーザーエクスペリエンスを改善するため、SDKにはloginWithRedirect()
メソッドにappState
パラメーターが含まれています。現在のアプリについての詳細は、認証の成功時に返されるAuthサーバーへの要求の部分としてパッケージ化されます。これは、ユーザージャーニーをシームレスに継続できるようにします。
クイックスタートでは、PrivateRoute
コンポーネントがtargetUrl
の状態パラメーターを設定し、index.js
のonRedirectCallback
関数がこの値を解凍して、認証完了時にユーザーをリダイレクトします。
トークンの保管
返されたトークンを可能な限り安全な方法で保管するため、すべてのトークンはローカルキャッシュに含められます。IDとアクセストークンは、必要に応じてトークンを取得するために使用されるオーディエンス値とスコープ値のペアとして保管されます。 また、IDトークンまたはアクセストークンのいずれかの有効期限が切れると、キャッシュトークンは削除されるため、キャッシュ内にあるトークンはまだ有効であると判断できます。APIを呼び出す
getTokenSilently()
メソッドは、まずトークンキャッシュを活用するために使用され、トークンキャッシュがない場合には非表示のiframeを起動して、新しいトークンを取得します。この目的のため、APIへのすべての要求は、このメソッドを使用してベアラートークンヘッダーを構築できます。期限切れのトークンを処理するための追加ロジックを不要です。
クイックスタートでは、ExternalService
ビューがこの機能を使用してExpress APIに要求を行います。
ユーザーにセッションを継続するよう警告する
ユーザーがAuth0セッションを更新するアクションを行っていない場合、Auth0は、明示的にセッションの継続を選択するようユーザーに警告することを推奨します。 このアプローチの意図は、ユーザーが存在しなくなった場合にセッションが非アクティブになれるようにしつつ、それ以外の場合、資格情報をもう一度求めることなくセッションを継続できるようにサイレントトークンリフレッシュをトリガーする手段を提供することです。 非アクティブタイマーとタイムアウトのモーダルについては、「アプリケーション特有のログアウトURL」をお読みください。ワークフローの例
- 最初の認証
- Auth0セッションの維持
- シームレスSSO
- ユーザーにセッション延長を促す
- ユーザーが明示的にアプリケーションからログアウト
- ユーザーがログアウト後、当初のアプリに戻る
最初の認証
- 新しいタブが開く
- ログイン要求
- ユーザーが資格情報を入力する
- SSOクッキー(有効期限あり)が設定されている
- トークンの交換が実行される

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

シームレスSSO
- ユーザーがプライベートルートに移動する
isAuthenticated()
で確認する- falseの場合には
loginWithRedirect()
を呼び出す

ユーザーにセッション延長を促す
- 240秒後に、60秒間継続するモーダルでセッションをアクティブに維持するようユーザーに促す
- セッションの維持を選択した場合にはgetTokenSilently()を呼び出す

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

ユーザーがログアウト後、当初のアプリケーションに戻る
- ユーザーが保護されたリソースからデータを要求する
getTokenSilently()
が呼び出される- アプリケーション依存の動作
