> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-eval-flywheel-swift-quickstart.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# FAPI準拠の設定

> Auth0テナントのFAPI準拠を設定する方法を説明します。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  ハイリーレギュレーテッドアイデンティティ機能を使用するには、エンタープライズプランとハイリーレギュレーテッドアイデンティティアドオンが必要です。詳細については、「[Auth0の価格設定](https://auth0.com/pricing/)」を参照してください。
</Callout>

Financial-grade AP（FAPI）プロファイルの１つに従うようにAuth0テナントを構成できるようにするために、アプリケーションモデルには、以下の3つの値のうちの1つに設定できる`compliance_level`プロパティが含まれています。

* `null`または未定義：コンプライアンスレベルは必要ありません。これはデフォルトです。
* `fapi1_adv_mtls_par`：ユーザーは[mTLS](/docs/ja-jp/get-started/applications/configure-mtls)と[PAR](/docs/ja-jp/get-started/applications/configure-par)を使用したFAPI 1高度プロファイルに準じてこのクライアントが行動することを望んでいます。
* `fapi1_adv_pkj_par`：ユーザーは[秘密鍵JWT](/docs/ja-jp/get-started/applications/configure-private-key-jwt)と[PAR](/docs/ja-jp/get-started/applications/configure-par)を使用したFAPI 1高度プロファイルに準じてこのクライアントが行動することを望んでいます。

FAPIプロファイルに準拠することは、いくつかの構成変更を必要とします。要求および構成が選択された標準に準拠していない限り、認可要求が成功しないように、`compliance_level`を設定します。

たとえば、`fapi1_adv_pkj_par`および`fapi1_adv_mtls_par`の両方の準拠レベルは、PARを必要とします。これらの準拠レベルのどちらかが選択された場合、`require_pushed_authorization_requests`設定の値にかかわらず、PARが必要です。PARを使用せずに認証を試みると、以下のエラー応答につながります。

```json lines theme={null}
{
  “error”: “invalid_request”,
  “error_description”: “Pushed Authorization Requests are required by the configured compliance level” 
}
```

場合によっては、準拠レベルの設定がAuth0の動作も変更します。たとえば、`fapi1_adv_pkj_par`および`fapi1_adv_mtls_par`の両方の準拠レベルは、Auth0が、状態値のSHA256ハッシュを含む、返されたIDトークンに`s_hash`クレームが含まれる原因になります。これにより、IDトークンがデタッチ署名として機能できるようなります。

以下の表は、追加の検証ルールおよび各準拠レベルで可能なAuth0の動作の変更をまとめたものです。

| 検証                                                                       | `fapi1_adv_pkj_par` | `fapi1_adv_mtls_par` |
| ------------------------------------------------------------------------ | ------------------- | -------------------- |
| `/userinfo`の呼び出しでアクセストークンがURLクエリで渡されることを防ぐ。その代わりに、アクセストークンは必ず認可ヘッダーに含める。 | 要                   | 要                    |
| PARが必要。                                                                  | 要                   | 要                    |
| S256チャレンジを使用したPKCEが必要。                                                   | 要                   | 要                    |
| クライアントの許可されたコールバックにワイルドカードが使用されることを防ぐ。                                   | 要                   | 要                    |
| JARの使用を強制する。                                                             | 要                   | 要                    |
| JARペイロードがPS256アルゴリズムを使って署名されることを確実にする。                                   | 要                   | 要                    |
| JARペイロードにnbfクレームが含まれ、その値が60分以下であることを確実にする。                               | 要                   | 要                    |
| JARペイロードにexpクレームが含まれ、その値がnbfクレームの値から60分までであることを確実にする。                    | 要                   | 要                    |
| クライアントが`oidc_conformant`プロパティをtrueに設定していることを確実にする。                       | 要                   | 要                    |
| クライアント認証に秘密鍵JWTの使用が必要。                                                   | 要                   | 不要                   |
| クライアント認証にmTLSの使用が必要。                                                     | 不要                  | 要                    |

| Auth0の更新された動作                                                                                         | `fapi1_adv_pkj_par` | `fapi1_adv_mtls_par` |
| ----------------------------------------------------------------------------------------------------- | ------------------- | -------------------- |
| s\_hashクレームをIDトークンに追加します。                                                                             | 有                   | 有                    |
| プロファイルスコープが要求される場合、`update_at`クレームには文字列でなく、OIDC準拠のUnixタイムスタンプが含まれます。                                  | 有                   | 有                    |
| OIDC準拠のエラーコードのみを返します。Auth0がその他のエラーコードを返す場合もありますが、このコンプライアンスレベルを有効にしておけば、OpenID基準で定義されたエラコードのみが使用されます。 | 有                   | 有                    |

## クライアントのFAPI準拠の設定

<Tabs>
  <Tab title="Auth0 Dashboard">
    Auth0 Dashboardを使用して、これを実行する方法：

    1. **［Auth0 Dashboard］ > ［Applications（アプリケーション）］** に移動します。
    2. アプリケーションを選択します。
    3. **［Application Settings（アプリケーションの設定）］** タブを選択します。
    4. **［Advanced Settings（高度な設定）］** セクションを開きます。
    5. **［OAuth0］タブ** から、**［FAPI Compliance Enforcement Level（FAPIコンプライアンス強制適用レベル）］** を選択します。

    FAPIコンプライアンスを構成するオプション：

    * **None** ：コンプライアンスレベルは必要ありません。これはデフォルトです。
    * **秘密鍵JWTとPARを使用したFAPI 1高度プロファイル** ：ユーザーは[秘密鍵JWT](/docs/ja-jp/get-started/applications/configure-private-key-jwt)と[PAR](/docs/ja-jp/get-started/applications/configure-par)を使用したFAPI 1高度プロファイルに準じてクライアントに行動するように望んでいます。
    * **mTLSとPARを使用したFAPI 1高度プロファイル** ：ユーザーは[mTLS](/docs/ja-jp/get-started/applications/configure-mtls)と[PAR](/docs/ja-jp/get-started/applications/configure-par)を使用したFAPI 1高度プロファイルに準じてクライアントに行動するように望んでいます。
  </Tab>

  <Tab title="Management API">
    [Management API](https://auth0.com/docs/api/management/v2)を使用して、POSTまたはPATCH要求で`compliance_level`プロパティを設定します：

    ```bash lines theme={null}
    curl --location --request PATCH 'https://$tenant/api/v2/clients/$client_id' \
      --header 'Authorization: Bearer $management_access_token' \
      --header 'Content-Type: application/json' \
      --data '{
        "compliance_level": "fapi1_adv_mtls_par"
    }'
    ```

    `compliance_level`プロパティを返す場合は、GET要求を使用します：

    ```bash lines theme={null}
    curl --location 'https://$tenant/api/v2/clients/$client_id \
      --header 'Authorization: Bearer $management_access_token'
    ```
  </Tab>
</Tabs>

## もっと詳しく

* [秘密鍵JWT認証の設定](/docs/ja-jp/get-started/applications/configure-private-key-jwt)
* [Pushed Authorization Requests（PAR）を構成する](/docs/ja-jp/get-started/applications/configure-par)
* [mTLS認証の設定](/docs/ja-jp/get-started/applications/configure-mtls)
