> ## 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.

# アプリケーション向けAPIアクセスポリシー

> アプリケーション向けAPIアクセスポリシーの設定方法を学びます。

アプリケーション向けAPIアクセスポリシーでは、Auth0 に登録した API にアプリケーションがどのようにアクセスできるかを制御できます。これらのポリシーは、アプリケーションが API とどのようにやり取りするかを定義します。たとえば、API のリソースにアクセスするためのアクセストークンを正常に取得できるかどうかなどです。

Auth0 Dashboard では、登録されている各 API ごとにアプリケーションの APIアクセスポリシーを設定できます。詳しくは、[API のアプリケーションアクセスポリシーを設定する](#configure-api-application-access-policy) を参照してください。

<div id="user-delegated-access-vs-client-access">
  ## ユーザー委任アクセスとクライアントアクセス
</div>

ユーザー委任アクセスとクライアント (マシン間) アクセスでは、それぞれ別個のアプリケーション API アクセスポリシーを設定できます。

* **クライアントアクセス**: マシン間アクセスに使用され、[Client Credentials フロー](/ja/docs/get-started/authentication-and-authorization-flow/client-credentials-flow) に対応します。
* **ユーザー委任アクセス**: エンドユーザーに関連付けられたアクセストークンを生成する、すべてのアクセスフローに使用されます。これにより、アプリケーションはユーザーに代わって API にアクセスできます。ユーザー委任アクセスフローには Client Credentials フローは含まれません。ユーザー委任アクセスフローの詳細については、[Authentication and Authorization Flows](/ja/docs/get-started/authentication-and-authorization-flow) を参照してください。

<div id="application-api-access-policies">
  ## アプリケーションのAPIアクセスポリシー
</div>

アプリケーションのAPIアクセスポリシーは次のとおりです。

| ポリシー                    | 説明                                                                                                                                                                                                                                                                                        | アクセスフロー                                                           |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| `All apps allowed`      | API に対してこのポリシーを設定すると、テナント内の任意のアプリケーションがそのAPIのアクセストークンを取得できます。特定のグラントは必要ありません。                                                                                                                                                                                                             | API 作成時のユーザー委任アクセスのデフォルトです。ユーザー委任アクセスでは、設定できるのは `allow_all` のみです。 |
| `Per-app authorization` | API に対してこのポリシーを設定すると、クライアントグラントが定義されているアプリケーションのみがそのAPIのアクセストークンを取得できます。クライアントグラントにより、アプリケーションがそのAPIに対して要求できる最大の権限が定義されます。クライアントグラントの作成方法と管理方法の詳細については、[Application Access to APIs: Client Grants](/ja/docs/get-started/applications/application-access-to-apis-client-grants) を参照してください。 | API 作成時の Client Credentials フローのデフォルトです。                          |
| `No apps allowed`       | API に対してこのポリシーを設定すると、他の設定やグラントにかかわらず、どのアプリケーションもそのAPIのアクセストークンを取得できません。アクセスは完全に制限されます。                                                                                                                                                                                                    | ユーザーアクセスとクライアントアクセスの両方で `deny_all` を設定できます。                       |

API のアプリケーションアクセスポリシーを設定する際、Auth0 は最小権限の原則に従う `Per-app authorization` の使用を推奨しています。詳細については、[Application Access to APIs: Client Grants](/ja/docs/get-started/applications/application-access-to-apis-client-grants) を参照してください。

API のアプリケーションアクセスポリシーを `Per-app authorization` に設定した場合は、必要なスコープをトークンリクエストに明示的に含める必要があります。これはリフレッシュトークンのリクエストには当てはまりません。リフレッシュトークンのリクエストでスコープを省略すると、認可サーバーは、アプリケーションが元のアクセストークンで付与されたすべてのスコープを要求しているものとみなします。その結果、認可サーバーは、リソース所有者が最初に付与したものと同じスコープを持つアクセストークンを返します。

<div id="configure-api-application-access-policy">
  ## API のアプリケーションアクセスポリシーを設定する
</div>

Auth0 Dashboard または Management API を使用して、API のアプリケーションアクセスポリシーを設定できます。

<Tabs>
  <Tab title="Auth0 Dashboard">
    API のアプリケーションアクセスポリシーを設定するには、次の手順を実行します。

    1. [Dashboard >  Applications > APIs](https://manage.auth0.com/#/apis) に移動し、対象の API を選択します。
    2. **Settings** タブを選択し、**Application Access Policy** までスクロールして、**User-Delegated Access** ポリシーと **Client Access** ポリシーを設定します。
       * **User-Delegated Access** ポリシーを **All apps allowed**、**Per-app authorization**、または **No apps allowed** に設定します。
         * **All apps allowed**: アプリケーションはユーザーに代わって API にアクセスできます。
         * **Per-app authorization**: アプリケーションがユーザーに代わって API にアクセスするには、クライアントグラントが必要です。
         * **No apps allowed**: アプリケーションによるユーザーに代わっての API へのアクセスは拒否されます。
       * **Client Access** ポリシーを **Per-app authorization** または **No apps allowed** に設定します。
         * **Per-app authorization**: マシン間アプリケーションは、対応するクライアントグラントを持っていれば、この API にアクセスできます。
         * **No apps allowed**: この API へのマシン間アクセスを制限します。
    3. **Save** を選択して、**Application Access Policy** を保存します。

    API に設定されているポリシーが **Per-app authorization** の場合は、**Application Access** タブを選択し、次に **Edit** を選択して、各アプリケーションに対して **User-Delegated Access**、**Client Access**、またはその両方を認可します。

    * **User-Delegated Access** では、**Grant Access** を選択してから必要な権限を選択します。**Always grant all permissions** を選択することもできます。
    * **Client Access** では、**Grant Access** を選択してから必要な権限を選択します。**Always grant all permissions** を選択することもできます。**Organization Support** では、次のいずれかを選択します。
      * **None**: マシン間アクセスを組織にスコープ設定することはできません。
      * **Optional**: マシン間アクセスは組織にスコープ設定できます。
      * **Required**: マシン間アクセスは組織にスコープ設定する必要があります。
  </Tab>

  <Tab title="Management API">
    Management API の [resource-servers コレクション](/ja/docs/api/management/v2/resource-servers/patch-resource-servers-by-id)にある `subject_type_authorization` プロパティを更新することで、API のアプリケーションアクセスポリシーを設定できます。

    `subject_type_authorization` オブジェクトには、`user` と `client` という 2 つのネストされたオブジェクトが含まれており、それぞれに [Application API access policies](#application-api-access-policies) で定義されている 3 つのアクセスポリシーのいずれかを設定できる policy 属性があります。

    **既存の API**

    既存の API のアプリケーションアクセスポリシーを設定するには、`/resource-servers/{id}` エンドポイントに `PATCH` リクエストを送信します。

    ```bash lines theme={null}
    curl --location --request PATCH 'https://{yourDomain}/api/v2/resource-servers/{RESOURCE_SERVER_ID}' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer {YOUR_MANAGEMENT_API_TOKEN}' \
    --data '{
        "subject_type_authorization": {
            "user": {
                "policy": "require_client_grant"
            },
            "client": {
                "policy": "deny_all"
            }
        }
    }'
    ```

    **新しい API**

    新しい API の作成時にアプリケーションアクセスポリシーを設定するには、`/resource-servers` エンドポイントに `POST` リクエストを送信します。

    ```bash lines theme={null}
    curl --location 'https://{yourDomain}/api/v2/resource-servers' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer {YOUR_MANAGEMENT_API_TOKEN}' \
    --data '{
      "name": "{YOUR_NEW_API_NAME}",
      "identifier": "{YOUR_NEW_API_IDENTIFIER}",
      "scopes": [
        {
          "value": "{SCOPE_VALUE}",
          "description": "{SCOPE_DESCRIPTION}"
        }
      ],
      "subject_type_authorization": {
        "user": {
          "policy": "require_client_grant"
        },
        "client": {
          "policy": "deny_all"
        }
      }
    }'
    ```
  </Tab>
</Tabs>

<div id="api-access-policies-and-third-party-applications">
  ## APIアクセスポリシーとサードパーティアプリケーション
</div>

[サードパーティアプリケーション](/ja/docs/get-started/applications/third-party-applications)が API にアクセスするには、API に設定されているAPIアクセスポリシーにかかわらず、常に明示的なクライアントグラントが必要です。

| **APIアクセスポリシー**          | **ファーストパーティアプリケーション** | **サードパーティアプリケーション** |
| ------------------------ | --------------------- | ------------------- |
| **Allow All**            | アクセス許可                | クライアントグラントが必要       |
| **Require Client Grant** | クライアントグラントが必要         | クライアントグラントが必要       |
| **Deny**                 | アクセス拒否                | アクセス拒否              |

[すべてのサードパーティアプリケーションのデフォルト権限](/ja/docs/get-started/applications/third-party-applications/configure-third-party-applications#default-permissions-for-all-third-party-applications)を設定することもできます。

1. **Applications > APIs** に移動して、API を選択します。
2. **Settings** タブで、**Default Permissions for Third Party Applications** に移動します。
3. **User-delegated Access** または **Client Access** で **Authorized** を選択し、付与するスコープを選択します。
4. **Save** を選択します。

詳細については、[Configure API Access Policies for Third-Party Applications](/ja/docs/get-started/applications/third-party-applications/configure-third-party-applications#configure-api-access-policies)を参照してください。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  既存の一部のテナントでは、サードパーティアプリケーションに対するAPIアクセスポリシーの動作が異なる場合があります。詳しくは、[Permissive Mode for Third-Party Applications](/ja/docs/get-started/applications/third-party-applications/permissive-mode)を参照してください。
</Callout>

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

* [APIへのアプリケーションアクセス: クライアントグラント](/ja/docs/get-started/applications/application-access-to-apis-client-grants)
* [サードパーティアプリケーション](/ja/docs/get-started/applications/third-party-applications)
* [サードパーティアプリケーションのセキュリティ制御](/ja/docs/get-started/applications/third-party-applications/security-controls)
