メインコンテンツへスキップ
Highly Regulated Identity 機能を使用するには、Highly Regulated Identity アドオンを含む Enterprise プランが必要です。詳細については、Auth0 Pricingを参照してください。
Pushed Authorization Request (PAR)は、認可リクエストをに直接プッシュするためのバックエンドプロトコルです。これは、高価値なシナリオで API を保護する役割を担う Financial-Grade API (FAPI) Security Profile 1.0 の技術コンポーネントです。

仕組み

PAR を使用すると、アプリケーションは の認可リクエストのパラメーターを、認可サーバーの PAR エンドポイント (1) に直接送信できます。これに対し、認可サーバーは /authorize エンドポイント (3) の呼び出し時に使用するリクエスト URI 値 request_uri (2) を返します。request_uri/par エンドポイントに保存された認可リクエストへの参照であるため、これらのリクエストが公開されることはありません (4)。詳細については、Configure Push Authorization Requests を参照してください。

利点

PAR を使用する利点の 1 つは、早い段階で検証できることです。Authorization Code Flow などの他の OAuth 2.0 フローでは、検証のためにエンドユーザーを認可サーバーにリダイレクトします。PAR では、エンドユーザーがリダイレクトされる前、認可リクエストの開始時点でリクエストパラメーターが検証されます。エラーページを表示するためだけにユーザーをリダイレクトするのは望ましくありません。 PAR では、認可リクエストもバックチャネル経由で送信されます。フロントチャネル通信は、追加された HTTPS クエリパラメーター (GET、POST) を介して中継役 (たとえばブラウザー) に依存します。メッセージは直接送信されません。これに対し、バックチャネル通信では、より直接的な方法として、認証されたバックエンドリクエストの本文で送信されます。 プッシュ認可リクエストはバックチャネルを通るため、次の利点があります。
  • 認可サーバーはリクエストの送信元を信頼でき、リクエストがエンドユーザーによって改変されていないことを確認できます。
  • リクエストの詳細がブラウザーのアドレスバーや履歴に露出せず、その時点でプライバシーが保たれます。
  • URL の長さに関する制限を気にする必要がありません。

制限事項

  • リクエストのペイロードの最大サイズは 10 KB に制限されています。
  • 現在、パブリックアプリケーションはサポートされていません。詳しくは、Public and Confidential Applications を参照してください。

PAR エンドポイントを呼び出す

要件

PAR エンドポイントを呼び出すには、次の要件を満たす必要があります。
  • リクエストの Content-Type を application/x-www-form-urlencoded に設定します。
  • 渡すすべてのパラメーターに文字列を使用します。
  • リクエストに、アプリケーションの認証方法を指定する追加パラメーターを含めます。PAR をサポートするのは のみであるため、使用できるアプリケーションの認証方法は次のとおりです: 、Private Key 、および mTLS。を取得する際は、/token エンドポイントでも同じアプリケーション認証方法を使用する必要があります。

サポートされているパラメーター

PAR エンドポイント では、次のもののみを保存して処理します。
  • 認可エンドポイント で認識される標準の OAuth 2.0 パラメーターと、該当する拡張機能
  • 先頭に ext- が付いたカスタム認可パラメーターを最大 10 個
PAR は、これ以外の追加のカスタム認可パラメーターを無視します。カスタム認可パラメーターは、Auth0 ActionsLogs では利用できません。
Actions でカスタム認可パラメーターを使用する場合は、先頭に ext- を付ける必要があります。そうしないと、利用できません。

PAR リクエストの例

curl --location --request POST https://$tenant/oauth/par \
  -H "content-type: application/x-www-form-urlencoded" \
  -d "client_id=CLIENT_ID"\
"&client_secret=CLIENT_SECRET"\
"&redirect_uri=https://jwt.io"\
"&audience=urn:my-notes-api"\
"&scope=openid%20profile%20read:notes"\
"&response_type=code"

PAR レスポンスの例

次の PAR レスポンスの例では:
  • request_uri は、保存された認可リクエストを参照するための値です。リクエストの値は、request_uri パラメーターとして GET /authorize エンドポイントに渡されます。
  • expires_in は、request_uri の有効期間 (秒数) を示します。この時間を過ぎて使用されなかった request_uri は期限切れになります。30 秒の有効期限は固定値であり、設定変更はできません。
HTTP/1.1 201 Created
 Content-Type: application/json

 {
  "request_uri":
    "urn:ietf:params:oauth:request_uri:6esc_11ACC5bwc014ltc14eY22c",
  "expires_in": 30
 }

レート制限

Essential、Professional、Enterprise の本番テナントでは、PAR エンドポイントへの呼び出しは標準の Authentication API のレート制限に含まれます。詳細については、レート制限の構成を参照し、ご利用のサブスクリプション種別をクリックしてください。次に、Authentication API をクリックしてください。

認可エンドポイントを呼び出す

アプリケーションは、認可リクエスト内で /oauth/par エンドポイントから返された request_uri の値を使用し、ユーザーエージェントを認可エンドポイントにリダイレクトします。request_uri パラメーターの詳細については、プッシュ認可リクエストを設定するを参照してください。 次の例では、ユーザーエージェントが次の HTTP リクエストを送信するよう指定します。
GET /authorize?client_id=CLIENT_ID&request_uri=urn%3Aietf%3Aparam...qrwSI HTTP/1.1 Host: TENANT.auth0.com
有効な request_uri の場合、以降のは同様です。

検証

  • PAR は、この段階で他の認可リクエストと同様に、認可サーバーによって再度検証されます。
  • request_uri の値は 1 回のみ使用できます。
  • 期限切れの request_uri は認可サーバーによって拒否されます。
  • テナント レベルまたはクライアント レベルで PAR が必須の場合、非 PAR リクエストは拒否されます。

詳細