忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【今日現場で出た!IT用語実戦解説】権限の範囲を定義する「Scope」の正体|情報処理問題1000本ノック

今日の現場でも一日中議論の的になった「Scope(スコープ)」。OIDC(OpenID Connect)などの認証・認可基盤を設計する上で、避けては通れない最重要キーワードです。試験上の定義と、現場での「あるある」をセットで整理しましょう。

1. 問題:アクセス範囲を要求する仕組み

【 問題 】 OIDCやOAuth 2.0において、アプリケーションが認証サーバーに対して、「ユーザーのメールアドレス」や「プロフィール情報」など、どのリソースへのアクセス権限を必要としているかを指定するための識別子を何と呼ぶでしょうか?

① Claim (クレーム)   ② Scope (スコープ)   ③ Grant (グラント)   ④ Audience (オーディエンス)

2. 正解:認可の範囲設定に関する正解

正解: ② Scope (スコープ)

3. 解説:メニュー(Scope)と中身(Claim)の関係

Scopeは、アプリが「この範囲の情報を見せてほしい」と頼むための「注文票(メニュー)」のようなものです。サーバー側でそのScopeが承認されると、発行されるトークンの中に、具体的なデータ値である「Claim(クレーム:属性情報)」が格納されて戻ってきます。

[ Scopeの代表例 ]
openid:OIDCを利用するための必須スコープ。これがないとIDトークンが発行されません。
profile:氏名、性別、誕生日などの基本情報へのアクセスを要求します。
email:メールアドレスの取得を要求します。

[ 混同しやすい用語との違い ]
Claim:Scopeの結果として返ってくる、ユーザーIDや名前などの「具体的なデータ項目(中身)」のこと。
Audience:そのトークンが「どのアプリ(宛先)向けに発行されたか」を示す識別子のこと。

1. 理解のコツ: Scopeはあくまで「範囲の要求」です。例えば `scope=email` と要求しても、ユーザーが認可画面で拒否したり、サーバー側にデータがなかったりすれば、結果のトークンにメールアドレス(Claim)は含まれません。
2. 最新トレンドの視点: セキュリティ設計では「最小権限の原則」が鉄則です。不必要に広いScopeを要求すると、万が一トークンが漏洩した際の被害が大きくなるため、実務では「本当にそのアプリにその権限が必要か?」が厳しくレビューされます。


4. まとめ

「アプリが欲しがっている情報の範囲」。これがScopeです。ユーザーが「どの情報を渡してよいか」を判断する境界線となる、ID連携の要(かなめ)といえる概念です。

---

【今日現場で出た!エンジニアの裏話】

今日は一日中、このScopeの設計に頭を悩ませていました。現場で最もハマりやすいのが、「指定したScopeに対して、どのClaim(属性)が返ってくるかはIdP(認証サーバー)製品によって微妙に違う」という問題です。

標準的な `profile` スコープを投げても、ある製品は「氏名」しか返さないのに、別の製品は「住所」まで返してくることがあります。

このような細かい項目を、一つ一つ潰していくのが、エンジニアの仕事だな。


PR