audienceまたは一意の識別子で識別される API。client_idで識別されるアプリケーション。- 指定したオーディエンスに対して、そのアプリケーションがリクエストを許可されている、スコープや
authorization_details_typesなどの権限のリスト。
アプリケーションの API アクセスポリシーとクライアントグラント
require_client_grant に設定すると、クライアントグラントが定義されているアプリケーションのみが、その API のアクセストークンを取得できます。クライアントグラントでは、最小権限の原則に基づき、アプリケーションが API に対して要求できる権限の上限を定義します。そのため、Auth0 では API のアプリケーションアクセスポリシーを設定する際に require_client_grant を使用することを推奨しています。
クライアントグラントが最小権限の原則にどのように従うかを示すため、read:posts、write:posts、read:friends、delete:posts の権限を持つ Social Media API があるとします。アプリケーションを作成し、read:posts と write:posts の権限を持つクライアントグラントを定義します。
このクライアントグラントは、以後、厳格な上限として機能します。Social Media API に他の権限があっても、アプリケーションが read:friends や delete:posts をリクエストしたり、それらの権限が付与されたりすることはありません。
ユーザー委任アクセスとクライアントアクセス
subject_type 属性により、API に対して許可されるアプリケーションアクセスの種類が決まります。
1 つのアプリケーションに対して、1 つの API には最大 2 つのクライアントグラントを設定できます。
subject_typeをclientに設定すると、マシン間の権限を定義します。subject_typeをuserに設定すると、ユーザーに代わって動作するための権限を定義します。
| アクセス種別 | subject_type 属性 | 説明 |
|---|---|---|
| クライアントクレデンシャルアクセス (マシンツーマシンアクセス) | subject_type を client に設定します。 | クライアントグラントは、エンドユーザーに代わってではなく、アプリケーション自身として API にアクセスすることをアプリケーションに直接認可します。クライアントグラントで定義した権限が、アプリケーションにアクセストークンで付与されることを認可された権限になります。 |
| ユーザー委任アクセス | subject_type を user に設定します。 | クライアントグラントは、アプリケーションが API に要求できる最大権限を定義します。ユーザーに代わってアプリケーションに発行されるアクセストークン内の最終的な権限は、次の権限の積集合です。
ユーザー委任アクセスフローの詳細については、Authentication and Authorization Flows を参照してください。ユーザー委任アクセスフローには、Client Credentials フローは含まれません。 |
Actions を使用すると、認可サーバーがアプリケーションまたはユーザーに付与する最終的なスコープを変更できます。
クライアントグラントの属性
| 属性 | 説明 |
|---|---|
id | クライアントグラントの一意の識別子。 |
audience | このクライアントグラントの対象となる API の一意の識別子。 |
client_id | アクセスを付与されるアプリケーションの一意の ID。 |
scopes | アプリケーションが要求できる権限を表す文字列の配列。 |
authorization_details_types | アプリケーションが要求できるリッチ認可データ型を表す文字列の配列。この属性を指定できるのは、ユーザー委任アクセスフローのみです。 |
subject_type | クライアントグラントで許可されるアプリケーションアクセスの種類:
|
allow_all_scopes | Boolean。API で定義されているすべてのスコープがそのアプリケーションに対して許可されるかどうかを示します。API では、今後定義されるスコープも自動的に許可されます。 |
organization_usage | アプリケーションが Client Credentials フローで API にアクセスする際に、組織をどのように使用できるかを決定します。指定可能な値は deny、allow、require です。組織の設定の詳細については、Organizations for M2M Applications: Define Organization Behavior を参照してください。 |
allow_any_organization | アプリケーションが Client Credentials フローを使用する際に、任意の組織にアクセスできるかどうかを決定します。 組織の設定の詳細については、Organizations for M2M Applications: Define Organization Behavior を参照してください。 |
クライアントグラントを作成する
- アプリケーションごとの権限: テナント内の各アプリケーションにきめ細かな権限を適用します。
- サードパーティアプリケーションのデフォルト権限: テナント内のすべてのサードパーティアプリケーションにデフォルト権限を適用します。
アプリケーションごとの権限
- Auth0 Dashboard
- Management API
Auth0 Dashboard を使用してアプリケーションごとの権限を設定するには、次の手順に従います。
アプリケーションごとの権限を使用する場合は、各アプリケーションに対して API アクセスを個別に認可する必要があります。
- Dashboard > Applications > APIs に移動し、アプリケーションアクセスを設定する API を選択します。
- Settings タブに移動し、下にスクロールして Application Access Policy まで進みます。
- User-Delegated Access を No apps allowed、Per-app authorization、または All apps allowed に設定します。
- No apps allowed: どのアプリケーションもその API のアクセストークンを取得できません。
- Per-app authorization: クライアントグラントが定義されているアプリケーションのみ、その API のアクセストークンを取得できます。
- All apps allowed: テナント内の任意のアプリケーションがその API のアクセストークンを取得できます。
- Client Access を Per-app authorization または All apps allowed に設定します。
- Per-app authorization: クライアントグラントが定義されているアプリケーションのみ、その API のアクセストークンを取得できます。
- All apps allowed: テナント内の任意のアプリケーションがその API のアクセストークンを取得できます。
- User-Delegated Access を No apps allowed、Per-app authorization、または All apps allowed に設定します。
- Application Access Policy の設定を保存するには、Save を選択します。

- Applications > APIs に移動し、API を選択します。
- Application Access タブに移動します。
- 対象のアプリケーションまでスクロールし、Edit を選択してから、User-Delegated Access および/または Client Access の Grant Access を選択します。次に、必要な権限を選択します。
- Save を選択します。

サードパーティアプリケーションのデフォルト権限
client_id ではなく default_for 属性を使用します。特定の client_id を持つクライアントグラントを作成して、アプリケーションごとの権限を定義することもできます。同じ API に対して両方が存在する場合は、アプリケーションごとの権限が優先されます。
システム API (Management API、My Account API など) は、デフォルトのサードパーティクライアントグラントをサポートしていません。サードパーティアプリケーションには、システム API へのアクセスを付与できません。
default_for 属性と client_id 属性は相互排他的です。各クライアントグラントでは、このいずれか一方のみを指定する必要があります。
サードパーティアプリケーションの API アクセスポリシーを設定する方法については、Configure Third-Party Applications を参照してください。
- Auth0 Dashboard
- Management API
Auth0 Dashboard を使用してサードパーティアプリケーションのデフォルト権限を設定するには、次の手順に従います。
- Dashboard > Applications > APIs に移動し、アプリケーションアクセスを設定する API を選択します。
- Settings タブに移動し、Default Permissions for Third-Party Applications までスクロールします。
- User-Delegated Access および/または Client Access を Unauthorized、Authorized、または All に設定します。
- Unauthorized: 権限は許可されません。
- Authorized: 権限を個別に選択します。
- All: 既存および今後の権限が含まれます。
- User-Delegated Access および/または Client Access を Unauthorized、Authorized、または All に設定します。
- Save を選択します。

クライアントグラントを更新する
/client-grants/{id} に PATCH リクエストを送信します。
クライアントグラントの削除
/client-grants/{id} に DELETE リクエストを送信します。
クライアントグラントを取得
client_id、audience、subject_type などのパラメーターを使用して、client-grants コレクションを検索し、ページネーションすることもできます。