スコープ (Scope) とは何か?
OAuth 2.0 と OpenID Connect (OIDC) プロトコルにおいて、スコープ (Scope) は、アプリケーションがユーザーのリソースに対して持つアクセスを制限するためのメカニズムです。これは、アプリケーションがユーザーから要求する権限を定義します。
スコープは、認可サーバーによって定義される文字列として表されます。アプリケーションがユーザーのリソースへのアクセスを要求するとき、認可リクエストに必要なスコープを指定します。ユーザーは認可プロセス中にこれらの権限を許可または拒否するよう促されます。
なぜスコープ (Scope) を使用するのか?
- 細かいアクセス制御: スコープにより、アプリケーションは特定のアクションを実行するために必要な権限のみを要求でき、不正なアクセスのリスクを減少させます。
- ユーザー同意: スコープは、アプリケーションがどのようなデータにアクセスし、なぜそれが必要かをユーザーに理解させます。
- セキュリティ: スコープは、アプリケーションがアクセス権を超えないようにし、ユーザーのデータのセキュリティを向上させます。
スコープ (Scope) はどのように機能するか?
アプリケーションが OAuth 2.0 / OIDC 認可プロセスを開始するとき、認可リクエストにスコープのリストを含めます。その後、認可サーバーはユーザーに要求されたスコープを一覧表示した同意画面を提示します。ユーザーは各スコープへのアクセスを許可または拒否することを選択できます。このプロセスは、通常、ユーザーのリソースへのアクセスが必要なサードパーティアプリケーションの場合に使用されます。
別の方法として、アプリケーションが認可サーバーから信頼されている場合、ユーザーが同意を求められないこともあり、自動同意が行われ、要求されたすべてのスコープが許可されます。
スコープ (Scope) の定義
スコープは通常、API プロバイダーによって定義されます。それらは次のようになります:
- 標準スコープ: OAuth 2.0 仕様によって定義された、さまざまなアプリケーションやサービスで共有される一般的に使用されるスコープ。例:
openid
,profile
,email
。 - カスタムスコープ: アプリケーションまたはサービスに固有で、その独自の要件に合わせたもの。例:
read:orders
,write:comments
。
OIDC とアイデンティティ管理においてスコープ (Scope) はどこで使用されるか?
スコープは、OIDC のさまざまな側面で使用されますが、次に限定されません:
- 認証 (Authentication): スコープは、認証プロセス中に特定のユーザー情報を要求するために使用できます。例:
profile
,email
。 - 認可 (Authorization): スコープは、特定のリソースへのアクセスや特定のアクションを実行するために使用できます。例:
read:orders
,write:comments
。 - 同意: スコープは、アプリケーションが要求する権限をユーザーに知らせるために同意画面に表示されます。
- トークン発行: スコープは、アプリケーションに許可された権限を示すためにトークン応答に含まれます。
- トークンの検証: スコープは、アプリケーションが保護されたリソースにアクセスするためにトークンを提示した際に、そのアクセス権を検証するために使用できます。
- リソースサーバー: スコープは、リソースサーバーがアプリケーションに許可された権限に基づいてアクセス制御ポリシーを実施するために使用されます。
- ユーザープロファイル: スコープは、基本的なクレームを超えるユーザープロファイル情報を要求するために使用できます。
ベストプラクティス
- 最小限のスコープを要求する: 常にアプリケーションが機能するために必要な最小限のスコープのみを要求してください。これにより、過剰な権限のリスクが最小化され、ユーザーの信頼が向上します。
- スコープの使用を説明する: 各スコープが必要な理由をユーザーに明確に説明してください。透明性はユーザーの同意を得る助けとなります。
- 可能な場合は標準スコープを使用する: 標準スコープを利用して、互換性を確保し、複雑さを減少させます。