Skip to main content
カスタムトークン交換では、アプリケーションは /oauth/token エンドポイントを呼び出すことで、既存のセキュリティトークン (subject_token) を Auth0 のアクセストークン、ID トークン、リフレッシュトークンに交換できます。これは RFC 8693 に準拠しています。

仕組み

カスタムトークン交換フローは、単一の専用 Custom Token Exchange Action によって制御されます。この Action は、カスタムトークン交換プロファイル で設定された、受信 subject_token_type パラメーターに基づいて一意に選択されます。
このフローの前提条件として、特定の subject_token_type を、そのリクエストを処理する Action にマッピングする カスタムトークン交換プロファイル を定義する必要があります。 カスタムトークン交換フローがトリガーされると、次のように処理されます。
  1. アプリケーションは、交換対象のセキュリティトークン (subject_token) と対応する subject_token_type を含む POST リクエストを /oauth/token エンドポイントに送信します。リクエストには、ユーザーに代わって動作するプリンシパルを識別するための actor_tokenactor_token_type を必要に応じて含めることもできます。
  2. Auth0 はクライアントのリクエストと資格情報を検証します。
  3. 関連付けられた Custom Token Exchange Action が実行されます。カスタムコードでは、subject_token をデコードして検証し、必要な認可ポリシーを適用したうえで、交換を承認するために トランザクション のユーザーを設定する必要があります。また、Action は api.authentication.setActor() を使って トランザクション の actor を設定することもでき、その結果、発行されるトークンに、ユーザーに代わって動作している主体を示す act claim が含まれます。
  4. 続いて、標準の Auth0 pipeline の残りの処理が実行され、設定されたユーザーに対して Auth0 アクセストークン が生成され、必要に応じて ID トークン と リフレッシュトークン も生成されます。
  5. リクエスト元のアプリケーションは、その後、Action で設定されたユーザーに代わって API を安全に呼び出すために、これらの新しく発行されたトークンを使用できます。
audienceurn:YOUR_AUTH0_TENANT_DOMAIN:session_transfer に設定すると、アクセストークンではなく Session Transfer Token が返されます。このトークンをアプリケーションで引き換えることで、別のユーザーとして Web セッションを確立できます。詳細については、セッション委譲 を参照してください。

はじめに

カスタムトークン交換を使用するには、カスタムトークン交換プロファイルを作成する必要があります。一般的なワークフローは、3 つの主要な設定手順の後に API 呼び出しを行う流れになります。
  1. トークン交換を制御するロジックを含む Action を作成してデプロイする。この Action では、次の処理を行うカスタムコードを記述します。
    • 受信した subject_token を安全にデコードして検証する。
    • トランザクションに必要な認可手順を実行する。
    • 利用可能な カスタムトークン交換 Actions API オブジェクトのメソッドを使用して、トランザクションに対応するユーザーを設定する。
  2. テナントに カスタムトークン交換プロファイルを作成する。このプロファイルにより、リクエストで使用する特定の subject_token_type と、先ほど作成した Action の間に 1 対 1 のマッピングが確立されます。
  3. アプリケーションでカスタムトークン交換を有効にする
カスタムトークン交換プロファイルを作成したら、次の手順に進む準備は完了です。
  1. API を呼び出す: 必要なパラメーターを含めて、/oauth/token エンドポイントに POST リクエストを送信できるようになります。これには、subject_token と、設定したプロファイルに対応する subject_token_type が含まれます。詳しくは、カスタムトークン交換を使用して API を呼び出すをご覧ください。

詳しくはこちら