スコープは、アプリが Manabu2 に対してできる操作の範囲です。アプリ登録画面でチェックボックスとして選びます。この記事では、各スコープの意味と、なぜ一部が組織管理者限定なのかを説明します。
まず押さえるべき考え方:スコープは「上限」です
これを取り違えると設定を間違えます。
実際にアプリができることは、次の 3 つすべてに共通する範囲だけです。
- アプリに許可したスコープ(この画面で設定するもの)
- アプリがサインイン時に要求したスコープ
- サインインした利用者本人の権限
つまり、アプリに read:reports を許可しても、レポートを見る権限のない一般社員がそのアプリを使ったとき、レポートは取得できません。スコープを許可することは、利用者に権限を与えることではありません。
逆に言えば、必要以上に広いスコープを許可しても「誰でも何でもできるようになる」わけではありません。それでも狭く保つべき理由は次の節にあります。
スコープ一覧
受講者向け(開発者ロールで許可できます)
| スコープ | 意味 | 典型的な用途 |
|---|---|---|
read:catalog |
コースを見る | コース・学習パス・修了証の一覧表示 |
read:content |
レッスン内容を読む | レッスン本文、教材、クイズの設問の取得 |
read:progress |
自分の進捗を見る | 本人の受講状況・アサイン・修了証の表示 |
write:progress |
進捗を記録する | 受講・完了の記録、クイズの提出 |
受講者向けモバイルアプリであれば、通常はこの 4 つだけで足ります。
管理者向け(組織管理者のみが許可できます)
| スコープ | 意味 | 典型的な用途 |
|---|---|---|
read:members |
メンバーを見る | 組織のメンバー一覧の取得 |
write:members |
メンバーを変更する | 人事システムとの社員データ同期 |
read:reports |
レポートを見る | BI ツールへの学習状況の連携 |
webhooks:manage |
Webhook を管理する | イベント通知の登録・削除 |
なぜ管理者向けスコープが分けられているのか
「スコープは上限であって権限付与ではない」なら、開発者が自由に選んでも問題ないように見えます。しかし 1 つだけ抜け道があります。
アプリは「他人の権限を受け取る器」になれます。
開発者が
write:members を要求するアプリを登録し、そのアプリに組織管理者や人事担当者がサインインしたとします。発行されるトークンには write:members が入ります。そしてそのトークンは、開発者が指定したリダイレクト先に、開発者が書いたコードの中へ渡ります。
開発者は自分自身に権限を与えることはできません。しかし、権限を持つ人が使った瞬間にその権限で動けるアプリを作ることはできてしまいます。
そのため、管理者向けスコープの付与は組織管理者に限定されています。組織管理者はもともとその権限を持っているため、この経路で新たに得られるものはありません。
管理者向けスコープが必要なアプリを作る場合は、組織管理者にアプリ登録(またはスコープの追加)を依頼してください。開発者ロールのままでも、登録済みアプリの他の設定は編集できます。すでに付与されている管理者向けスコープが、編集操作で勝手に外れることはありません。
実際の選び方
受講者向けモバイルアプリ
read:catalogread:contentread:progresswrite:progress
社内ポータルへの埋め込み表示
read:catalogread:progress
表示だけなら書き込みは不要です。
人事システム連携(管理者が登録)
read:memberswrite:members
この用途は API キーのほうが適している場合があります。
迷ったら狭いほうを選んでください。
足りなければ後から追加できます。広すぎるスコープは、アプリに不具合や侵害があったときの被害範囲をそのまま広げます。
API キーの場合は事情が違います
API キーは、利用者を介さずにそのスコープをそのまま持ちます。アプリのトークンのように「利用者本人の権限との共通範囲」で絞られることはありません。
そのため API キーのスコープ選択は、アプリよりも直接的に権限そのものです。こちらも管理者向けスコープは組織管理者のみが付与できます。