> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging-feat-init-gt-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)を参照してください。

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

ユーザー委任アクセス用とクライアント (マシンツーマシン) アクセス用に、それぞれ個別のアプリケーション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)をご覧ください。

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

アプリケーションの 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` に設定した場合は、トークンリクエストに必要なスコープを明示的に指定する必要があります。これはリフレッシュトークンのリクエストには当てはまりません。リフレッシュトークンのリクエストでスコープを省略すると、認可サーバーは、アプリケーションが元のアクセストークンで付与されたすべてのスコープを求めているものと見なします。その結果、認可サーバーは、リソース所有者によって元のアクセストークンに付与されたものと同じスコープを持つアクセストークンを返します。

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

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` リクエストを送信します。

    <Tabs>
      <Tab title="Auth0 CLI">
        <Callout icon="file-lines" color="#0EA5E9" iconType="regular">Auth0 CLI を使用していますか？まだセットアップしていない場合は、このコマンドを実行する前に[CLIセッションをセットアップして認証してください](/docs/ja-jp/deploy-monitor/auth0-cli)。</Callout>

        ```bash theme={null}
        auth0 api patch "resource-servers/{RESOURCE_SERVER_ID}" \
          --data '{
              "subject_type_authorization": {
                  "user": {
                      "policy": "require_client_grant"
                  },
                  "client": {
                      "policy": "deny_all"
                  }
              }
          }'
        ```
      </Tab>

      <Tab title="cURL">
        ```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"
                }
            }
        }'
        ```
      </Tab>
    </Tabs>

    **新しいAPI**

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

    <Tabs>
      <Tab title="Auth0 CLI">
        ```bash theme={null}
        auth0 api post "resource-servers" \
          --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>

      <Tab title="cURL">
        ```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>
  </Tab>
</Tabs>

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

[サードパーティアプリケーション](/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>

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

* [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)
