セッション委譲は、ネイティブからWebへのSSOとは異なる課題を解決します。ネイティブからWebへのSSOでは、すでに認証済みのユーザー自身のセッションを、ネイティブアプリケーションからWebアプリケーションへ引き継ぎます。一方、セッション委譲では、サポートアクセスや担当者支援ワークフローなどのユースケースで、別の認可済みアクターが別のユーザーとしてセッションを確立できます。サインイン済みのユーザーをネイティブアプリからWebアプリへ移行する場合は、ネイティブからWebへのSSOを参照してください。
仕組み
パート 1: Session Transfer Token を取得する
- アクター (サポート担当者) は、管理ツールを通じて Auth0 で認証を行い、
actor_tokenとして使用する Auth0 ID トークンなど、自身のアイデンティティを証明する情報を取得します。 - 管理ツールは、
audienceをurn:YOUR_AUTH0_TENANT_DOMAIN:session_transferに設定したカスタムトークン交換リクエストを使用して、Auth0 の/oauth/tokenエンドポイントを呼び出します。 - 関連付けられたカスタムトークン交換 Action が委譲を承認し、主体ユーザーを設定し (通常は
setUserByConnection()を使用) 、setActor()を呼び出してアクターを記録します。Session Transfer Token を取得するには、setActor()を呼び出す必要があります。 - Auth0 は、主体ユーザーを識別し、トランザクション内のアクターが記録された Session Transfer Token を発行します。
パート 2: Session Transfer Token の引き換え (ブラウザーリダイレクト)
initiate_login_uri にクエリパラメータとして付加する方法を推奨します。
- アプリケーションは、Session Transfer Token と、organization のコンテキストでログインする必要がある場合は
organizationパラメータをクエリパラメータとして付加し、アクターのブラウザーを対象アプリケーションのinitiate_login_uriにリダイレクトします。 - これにより、Session Transfer Token を含むブラウザーが Auth0 テナントの
/authorizeエンドポイントに送られ、シームレスな引き換えが開始されます。Auth0 はトークンを検証し、主体ユーザーの一時的な委譲セッションを確立するとともに、監査用にsession.actorにアクターを記録します。 - 対象アプリケーションはログインを完了し、委譲を識別する
actclaim を含むアクセストークンと ID トークンを受け取ります。
制限事項
- 委譲セッションの確立でサポートされるのは認可コードフローのみです。SAML、WS-Federation、およびImplicit Flowはサポートされていません。
- サポートされるアクターは単一レベルのみです。最大5レベルのネストされたアクターをサポートするカスタムトークン交換のアクセストークンとは異なり、Session Transfer Tokenで受け入れられるアクターは1つのみです。
- 委譲セッションにはリフレッシュトークンは発行されません。
- MFA、同意、または登録プロンプトが必要な場合、委譲セッションは確立できません。プロンプトを表示する代わりに、リクエストは
interaction_requiredで失敗します。