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

> スコープの基本概念を理解し、その一般的な使用例を確認します。

# スコープ

ユーザー情報は、多くの場合、複数のオンラインリソースに分散して保存されています。ユーザーは、Flickr のようなサービスに写真をアップロードして保存したり、Dropbox にデジタルファイルを保管したり、Google Calendar や Facebook に連絡先や予定を保存したりすることがあります。

新しいアプリケーションでは、こうしたオンラインリソースにすでに存在する情報を利用したい場合がよくあります。そのためには、アプリケーションはユーザーに代わってその情報にアクセスするための認可を求める必要があります。スコープは、アプリケーションがユーザーに代わって実行できる操作の範囲を定義します。

<div id="ways-to-use-scopes">
  ## スコープの使い方
</div>

アプリが <Tooltip tip="認可サーバー: ユーザーのアクセス範囲の定義に関与する集中管理型サーバー。たとえば、認可サーバーはユーザーが利用できるデータ、タスク、機能を制御できます。" cta="用語集を表示" href="/ja/docs/glossary?term=authorization+server">認可サーバー</Tooltip> を通じてリソースへのアクセス許可をリクエストする際は、必要なアクセスを指定するために `scope` パラメーターを使用します。また、認可サーバーも `scope` パラメーターを使用して、実際に付与されたアクセスを返します (付与されたアクセスがリクエスト内容と異なる場合) 。

一般的に、スコープの用途は次の 3 つです。

* アプリケーションから、ユーザーの本人確認を行い、メールアドレスやプロフィール画像などの基本的なユーザープロファイル情報を取得する方法です。このシナリオで使用できるスコープには、<Tooltip tip="OpenID: アプリケーションがログイン情報を収集・保存しなくても、ユーザーのアイデンティティを検証できる認証のためのオープン標準です。" cta="用語集を表示" href="/ja/docs/glossary?term=OpenID">OpenID</Tooltip> Connect (OIDC) プロトコルで実装されているものが含まれます。詳しくは、[OpenID Connect Scopes](/ja/docs/get-started/apis/scopes/openid-connect-scopes) を参照してください。
* [API](/ja/docs/api) でアクセス制御を実装する方法です。この場合は、API 用のカスタムスコープを定義し、呼び出し元のアプリケーションがそれらを使用できるようにする必要があります。詳しくは、[API Scopes](/ja/docs/get-started/apis/scopes/api-scopes) を参照してください。
* アプリケーションから、独自のカスタムスコープを実装した API を呼び出す方法です。この場合は、呼び出す API にどのカスタムスコープが定義されているかを把握しておく必要があります。アプリケーションからカスタム API を呼び出す例については、[Sample Use Cases: Scopes and Claims](/ja/docs/get-started/apis/scopes/sample-use-cases-scopes-and-claims) を参照してください。

<div id="best-practices">
  ## ベストプラクティス
</div>

ユースケースを理解し、可能な限り最小限のスコープを選択してください。

スコープを要求する場合は、アプリケーションが機能するのに十分なアクセス権を求めつつ、本当に必要なものだけを要求するようにしてください。求めているのはユーザーの本人確認でしょうか。それとも、ユーザーのデータを操作する許可でしょうか。たとえば、ユーザーの Facebook ユーザープロファイル情報を取り込むことと、そのウォールに投稿することには大きな違いがあります。必要なものだけを要求すれば、必要な場合にユーザーの同意を得られる可能性が高まります。ユーザーは、限定的で明確に指定されたスコープであれば、アクセスを許可しやすいためです。

同様に、API のカスタムスコープを作成する際は、アプリケーションに必要となるアクセス粒度を検討し、それに応じて設計してください。

<div id="requested-scopes-versus-granted-scopes">
  ## 要求されたスコープと付与されたスコープ
</div>

場合によっては、要求されているアクセスに対してユーザーの同意が必要になります。通常、返されるスコープは要求されたものと同じですが、ユーザーは付与するスコープを変更できることがあります (最初の同意時、およびリソースによってはその後も) 。そのため、アプリが要求したよりも少ないアクセス権しか付与されない場合があります。

アプリケーション開発者は、この可能性を考慮し、アプリでこうしたケースに対応する必要があります。たとえば、利用できる機能が制限されることをユーザーに警告できます。また、追加の権限を求めるために、ユーザーを <Tooltip tip="認可フロー: OAuth 2.0 フレームワークで指定される認可グラント（またはワークフロー）。" cta="用語集を表示" href="/ja/docs/glossary?term=authorization+flow">認可フロー</Tooltip> に再度進ませることもできます。ただし、同意を求められた場合、ユーザーはいつでも拒否できます。

デフォルトでは、Auth0 はファーストパーティアプリケーションのユーザー同意を省略します。これは、そのアプリケーションが呼び出す API と同じ Auth0 ドメインの下で登録されているアプリケーションです。ただし、Auth0 では、ファーストパーティアプリケーションに対してもユーザー同意を必須にするよう API を設定できます。外部アプリケーションであるサードパーティアプリケーションでは、ユーザー同意が必要です。

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

* [OpenID Connect のスコープ](/ja/docs/get-started/apis/scopes/openid-connect-scopes)
* [API のスコープ](/ja/docs/get-started/apis/scopes/api-scopes)
* [ユースケースの例: スコープとクレーム](/ja/docs/get-started/apis/scopes/sample-use-cases-scopes-and-claims)
* [API のロールベースアクセス制御を有効にする](/ja/docs/get-started/apis/enable-role-based-access-control-for-apis)
