> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Pushed Authorization Requests（PAR）を Authorization Code Flow で使用する方法を説明します。

# Pushed Authorization Requests（PAR）を使用した Authorization Code Flow

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Highly Regulated Identity 機能を使用するには、Highly Regulated Identity アドオンを含む Enterprise プランが必要です。詳細については、[Auth0 Pricing](https://auth0.com/pricing/)を参照してください。
</Callout>

[Pushed Authorization Request (PAR)](https://datatracker.ietf.org/doc/html/rfc9126)は、認可リクエストを<Tooltip tip="Authorization Server: ユーザーのアクセス範囲の定義に関与する集中管理サーバー。たとえば、認可サーバーはユーザーが利用できるデータ、タスク、機能を制御できます。" cta="用語集を表示" href="/ja/docs/glossary?term=authorization+server">認可サーバー</Tooltip>に直接プッシュするためのバックエンドプロトコルです。これは、高価値なシナリオで API を保護する役割を担う [Financial-Grade API (FAPI) Security Profile 1.0](https://openid.net/specs/openid-financial-api-part-2-1_0.html) の技術コンポーネントです。

<div id="how-it-works">
  ## 仕組み
</div>

PAR を使用すると、アプリケーションは <Tooltip tip="OAuth 2.0: 認可プロトコルとワークフローを定義する認可フレームワーク。" cta="用語集を表示" href="/ja/docs/glossary?term=OAuth+2.0">OAuth 2.0</Tooltip> の認可リクエストのパラメーターを、認可サーバーの PAR エンドポイント **(1)** に直接送信できます。これに対し、認可サーバーは `/authorize` エンドポイント **(3)** の呼び出し時に使用するリクエスト URI 値 `request_uri` **(2)** を返します。`request_uri` は `/par` エンドポイントに保存された認可リクエストへの参照であるため、これらのリクエストが公開されることはありません **(4)**。詳細については、[Configure Push Authorization Requests](/ja/docs/get-started/applications/configure-par) を参照してください。

<Frame>
  <img src="https://mintcdn.com/translations/6GE5Z24GDCZehiJ9/docs/images/cdy7uua7fh8z/6ivWNzZR7pnV79AXtjhJca/ad707b701d2a6d8b965ca3afe8846868/Template_for_Docs_-_Authorization_Code_Flow_with_PAR.png?fit=max&auto=format&n=6GE5Z24GDCZehiJ9&q=85&s=8bafb3103b84f8a0c3d6b5476bbd0dc5" alt="" width="1500" height="1000" data-path="docs/images/cdy7uua7fh8z/6ivWNzZR7pnV79AXtjhJca/ad707b701d2a6d8b965ca3afe8846868/Template_for_Docs_-_Authorization_Code_Flow_with_PAR.png" />
</Frame>

<div id="benefits">
  ## 利点
</div>

PAR を使用する利点の 1 つは、早い段階で検証できることです。[Authorization Code Flow](/ja/docs/get-started/authentication-and-authorization-flow/authorization-code-flow) などの他の OAuth 2.0 フローでは、検証のためにエンドユーザーを認可サーバーにリダイレクトします。PAR では、エンドユーザーがリダイレクトされる前、認可リクエストの開始時点でリクエストパラメーターが検証されます。エラーページを表示するためだけにユーザーをリダイレクトするのは望ましくありません。

PAR では、認可リクエストもバックチャネル経由で送信されます。フロントチャネル通信は、追加された HTTPS クエリパラメーター (GET、POST) を介して中継役 (たとえばブラウザー) に依存します。メッセージは直接送信されません。これに対し、バックチャネル通信では、より直接的な方法として、認証されたバックエンドリクエストの本文で送信されます。

プッシュ認可リクエストはバックチャネルを通るため、次の利点があります。

* 認可サーバーはリクエストの送信元を信頼でき、リクエストがエンドユーザーによって改変されていないことを確認できます。
* リクエストの詳細がブラウザーのアドレスバーや履歴に露出せず、その時点でプライバシーが保たれます。
* URL の長さに関する制限を気にする必要がありません。

<div id="limitations">
  ## 制限事項
</div>

* リクエストのペイロードの最大サイズは 10 KB に制限されています。
* 現在、パブリックアプリケーションはサポートされていません。詳しくは、[Public and Confidential Applications](/ja/docs/get-started/applications/confidential-and-public-applications) を参照してください。

<div id="call-the-par-endpoint">
  ## PAR エンドポイントを呼び出す
</div>

<div id="requirements">
  ### 要件
</div>

PAR エンドポイントを呼び出すには、次の要件を満たす必要があります。

* リクエストの Content-Type を `application/x-www-form-urlencoded` に設定します。
* 渡すすべてのパラメーターに文字列を使用します。
* リクエストに、アプリケーションの認証方法を指定する追加パラメーターを含めます。PAR をサポートするのは <Tooltip tip="Confidential Client: 信頼できるバックエンドサーバーを使用して認証情報を安全に保持できるクライアント（アプリケーション）。たとえば、安全なバックエンドを備えた Web アプリケーションや、マシン間（M2M）アプリケーションが該当します。" cta="用語集を表示" href="/ja/docs/glossary?term=confidential+clients">機密クライアント</Tooltip> のみであるため、使用できる[アプリケーションの認証方法](https://auth0.com/docs/api/authentication#authentication-methods)は次のとおりです: <Tooltip tip="Client Secret: クライアント（アプリケーション）が認可サーバーに対して認証を行うために使用する Secret。クライアントと認可サーバーのみが知っている必要があり、推測されないよう十分にランダムでなければなりません。" cta="用語集を表示" href="/ja/docs/glossary?term=Client+Secret">クライアントシークレット</Tooltip>、Private Key <Tooltip tip="Client Secret: クライアント（アプリケーション）が認可サーバーに対して認証を行うために使用する Secret。クライアントと認可サーバーのみが知っている必要があり、推測されないよう十分にランダムでなければなりません。" cta="用語集を表示" href="/ja/docs/glossary?term=JWT">JWT</Tooltip>、および mTLS。<Tooltip tip="Access Token: API へのアクセスに使用される認可クレデンシャルで、不透明な文字列または JWT の形式を取ります。" cta="用語集を表示" href="/ja/docs/glossary?term=access+token">アクセストークン</Tooltip>を取得する際は、`/token` エンドポイントでも同じアプリケーション認証方法を使用する必要があります。

<div id="supported-parameters">
  ### サポートされているパラメーター
</div>

PAR エンドポイント では、次のもののみを保存して処理します。

* 認可エンドポイント で認識される標準の OAuth 2.0 パラメーターと、該当する拡張機能
* 先頭に `ext-` が付いたカスタム認可パラメーターを最大 10 個

PAR は、これ以外の追加のカスタム認可パラメーターを無視します。カスタム認可パラメーターは、[Auth0 Actions](/ja/docs/customize/actions) と [Logs](/ja/docs/deploy-monitor/logs) では利用できません。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Actions でカスタム認可パラメーターを使用する場合は、先頭に `ext-` を付ける必要があります。そうしないと、利用できません。
</Callout>

<div id="example-par-request">
  ### PAR リクエストの例
</div>

```bash lines theme={null}
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"
```

<div id="example-par-response">
  ### PAR レスポンスの例
</div>

次の PAR レスポンスの例では:

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

```json lines theme={null}
HTTP/1.1 201 Created
 Content-Type: application/json

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

<div id="rate-limits">
  ### レート制限
</div>

Essential、Professional、Enterprise の本番テナントでは、PAR エンドポイントへの呼び出しは標準の Authentication API のレート制限に含まれます。詳細については、[レート制限の構成](/ja/docs/troubleshoot/customer-support/operational-policies/rate-limit-policy/rate-limit-configurations)を参照し、ご利用のサブスクリプション種別をクリックしてください。次に、**Authentication API** をクリックしてください。

<div id="call-the-authorization-endpoint">
  ## 認可エンドポイントを呼び出す
</div>

アプリケーションは、認可リクエスト内で `/oauth/par` エンドポイントから返された `request_uri` の値を使用し、ユーザーエージェントを認可エンドポイントにリダイレクトします。`request_uri` パラメーターの詳細については、[プッシュ認可リクエストを設定する](/ja/docs/get-started/applications/configure-par)を参照してください。

次の例では、ユーザーエージェントが次の HTTP リクエストを送信するよう指定します。

```http wrap lines theme={null}
GET /authorize?client_id=CLIENT_ID&request_uri=urn%3Aietf%3Aparam...qrwSI HTTP/1.1 Host: TENANT.auth0.com
```

有効な `request_uri` の場合、以降の<Tooltip tip="認可フロー: OAuth 2.0 フレームワークで指定される認可グラント（またはワークフロー）。" cta="用語集を見る" href="/ja/docs/glossary?term=authorization+flow">認可フロー</Tooltip>は同様です。

<div id="validation">
  ### 検証
</div>

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

<div id="learn-more">
  ## 詳細
</div>

* [Pushed Authorization Requests (PAR) を設定する](/ja/docs/get-started/applications/configure-par)
