メインコンテンツへスキップ
Rich Authorization Requests (RAR) を使用すると、クライアントは、エンドユーザーなどの から データを要求し、取得できます。  クライアントは、Authorization Code Flow の一部として、RAR データを Pushed Authorization Request (PAR) endpoint に渡すことができます。詳細については、Configure Pushed Authorization Requests を参照してください。 従来の フローでは、クライアントが スコープ を使用して へのアクセスを要求すると、リソースオーナーはそれらのリソースへのアクセスをクライアントに許可します。Rich Authorization Request では、クライアントは /par endpoint に authorization_details パラメーターを渡すことで、スコープで要求するものよりもさらに細かな権限を要求できます。これにより、クライアントとリソースオーナーの双方がリソースへのアクセスをよりきめ細かく制御できるようになり、アクセスの過剰付与に伴うセキュリティリスクを軽減できます。 Auth0 では authorization_details の type の検証のみがサポートされるため、authorization_details 内の JSON オブジェクトについては自分で検証を実装する必要があります。詳細については、Configure Rich Authorization Requests を参照してください。

仕組み

Rich Authorization Request では、authorization_details パラメーターはオブジェクトの JSON 配列であり、各要素には文字列で表される type フィールドを含める必要があります。type フィールドは、オブジェクト内でカスタマイズできるフィールドを決定します。authorization_details 配列には、同じ type のエントリを複数含めることができます。authorization_detailstype の登録方法の詳細については、Configure Rich Authorization Requests を参照してください。 Auth0 は、ユーザーがカスタムの同意画面で認可できるように authorization_details を表示します。詳細については、Set customized consent prompt を参照してください。 authorization_details パラメーターは /par エンドポイントに渡す必要があります。これにより、Auth0 の type の早期検証を実行できるようになります。/par エンドポイントは、ブラウザーなどのフロントチャネルで機密データが漏えいするのを防ぐため、認可リクエストをバックチャネル経由で渡します。認可リクエストを /par エンドポイントに渡すと、アプリケーションは /authorize エンドポイントにリダイレクトし、その後 Authorization Code Flow に進みます。詳細については、Authorization Code Flow with PAR を参照してください。 Authorization Code Flow を完了するには、次の例のように /oauth/token エンドポイントで認可コードを交換します。
POST https://{YOUR_DOMAIN}.auth0.com/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&client_id={YOUR_CLIENT_ID}&client_secret={YOUR_CLIENT_SECRET}&code={AUTHORIZATION_CODE}&redirect_uri=https://jwt.io
成功すると、authorization_details 配列を含むレスポンスを受け取ります。
{
  "access_token": "ey...ZQ",
  "expires_in": 86400,
  "authorization_details": [
{
  "type": "money_transfer", 
  "instructedAmount": {"amount": 2500, "currency": "USD"},   
  "sourceAccount": "xxxxxxxxxxx1234", 
  "destinationAccount": "xxxxxxxxxxx9876", 
  "beneficiary": "Hanna Herwitz", 
  "subject": "A Lannister Always Pays His Debts"
}
  ],
  "token_type": "Bearer"
}
JWT のベストプラクティスの一環として、クライアントは authorization_details を使用することで、アクセストークンを確認しなくても、自身に付与された認可のスコープを把握できます。要求された JWE アクセストークン を必要とする API の場合、/oauth/token エンドポイントは、authorization_details から type を除くすべてのオブジェクトフィールドを省略したレスポンスを返します。レスポンス内のアクセストークンのクレームには影響ありません。
{
  "iss": "https://my_tenant.auth0.com/",
  "sub": "auth0|me",
  "aud": "https://myapi.authzero.com",
  "iat": 1683661385,
  "exp": 1683747785,
  "azp": "my_client",
  "authorization_details": [
{
  "type": "money_transfer", 
  "instructedAmount": {"amount": 2500, "currency": "USD"},   
  "sourceAccount": "xxxxxxxxxxx1234", 
  "destinationAccount": "xxxxxxxxxxx9876", 
  "beneficiary": "Hanna Herwitz", 
  "subject": "A Lannister Always Pays His Debts"
}
  ]
}

Authorization Code Flow 用に RAR を設定する

Authorization Code Flow で Rich Authorization Requests を設定する前に、以下を実施する必要があります。 Authorization Code Flow で RAR を設定するには、以下が必要です。
  • リソースサーバーの authorization_details タイプを登録する。
  • カスタマイズした consent プロンプトを設定する。
詳しくは、Rich Authorization Requests を設定する を参照してください。

Actions で authorization_details にアクセスする

Auth0 は、Actions を使用した RAR の更新をサポートしていません。
Auth0 では、post-login Actionevent.transaction.requested_authorization_details プロパティを通じて authorization_details パラメーターを利用できます。Action ではこのプロパティを参照して、MFA チャレンジ でユーザーにトランザクションの詳細を表示できます。

Auth0 でサポートされていないこと

Auth0 では、次の機能はサポートされていません。
  • Actions を使用した RAR の更新
  • クライアントが検出できるように RAR タイプを公開すること
  • API で許可されているタイプと一致する type プロパティを持っているかどうかの確認を超える、RAR オブジェクトの検証。詳細については、RAR を設定するを参照してください。

詳細