> ## 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 アクセスポリシー

> ユーザー委任フローと Client Credential フローの両方で、すべて許可、アプリごとの認可、またはすべて拒否のポリシーを使用して、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 Flow](/docs/ja-jp/get-started/authentication-and-authorization-flow/client-credentials-flow)に対応します。
* **ユーザー委任アクセス**: エンドユーザーに関連付けられたアクセストークンを生成する、すべてのアクセスフローで使用されます。これにより、アプリケーションはユーザーに代わってAPIにアクセスできます。ユーザー委任アクセスフローには、Client Credentials Flowは含まれません。ユーザー委任アクセスフローの詳細については、[Authentication and Authorization Flows](/docs/ja-jp/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](/docs/ja-jp/get-started/applications/application-access-to-apis-client-grants) を参照してください。 | API 作成時の Client Credentials Flow のデフォルトです。                    |
| `No apps allowed`       | API に設定すると、他の設定やグラントの有無にかかわらず、どのアプリケーションもその API のアクセストークンを取得できません。アクセスは完全に制限されます。                                                                                                                                                                                                   | ユーザーアクセスとクライアントアクセスの両方で `deny_all` を設定できます。                   |

API のアプリケーションアクセス ポリシーを設定する場合、Auth0 では最小権限の原則に沿った `Per-app authorization` の使用を推奨しています。詳しくは、[Application Access to APIs: Client Grants](/docs/ja-jp/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 コレクション](/docs/ja-jp/api/management/v2/resource-servers/patch-resource-servers-by-id) にある `subject_type_authorization` プロパティを更新することで、APIのアプリケーションアクセスポリシーを設定できます。

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

    **既存の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>

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

| **API アクセスポリシー**  | **ファーストパーティアプリケーション** | **サードパーティアプリケーション** |
| ----------------- | --------------------- | ------------------- |
| **すべて許可**         | アクセスを許可               | クライアントグラントが必要       |
| **クライアントグラントが必要** | クライアントグラントが必要         | クライアントグラントが必要       |
| **拒否**            | アクセスを拒否               | アクセスを拒否             |

[すべてのサードパーティアプリケーションのデフォルト権限](/docs/ja-jp/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** を選択します。

詳細については、[サードパーティアプリケーションの API アクセスポリシーを設定する](/docs/ja-jp/get-started/applications/third-party-applications/configure-third-party-applications#configure-api-access-policies)を参照してください。

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

<div id="learn-more">
  ## 詳細はこちら
</div>

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