セキュリティ・ID

OAuth 2.0とは|アプリが求めた権限のうち、90日で一度も使われなかったのは47.5%だった

何のために作られたのか権限はどこまで絞れるのか引換券は何を表しているのか

アプリ40個が求める権限は平均5.0個でした。実際に使ったのは2.6個です。

残る2.4個、割合にして47.5%は、90日のあいだ一度も使われませんでした。

この記事の要点

  • 全部載せると60個
  • 求めた通りなら5.0個
  • 使った分なら2.6個
  • 未使用は47.5%

解こうとしているのは「語を預ける形」

仕様は、外部のアプリが利用者の語を保管せざるを得なかった状況を問題として挙げています。

OAuth 2.0の出発点は、それ以前の形の問題です。仕様は次のように書いています。

外部のアプリは、資源の持ち主の資格情報を、以後の利用のために保管することを求められる。多くの場合、平文のパスワードとしてという記述です。

問題は保管そのものです。預けた先の数だけ、語の置き場所が増えます

何が困るか

  1. 語が複製される。預けた先の数だけ置き場所が増える
  2. 範囲を区切れない。語を持てば何でもできる
  3. 取り消せない。語を変えると他の連携も切れる
  4. 期限がない。預けたままになる

2番目が、あとで測る部分につながります。語には範囲という考え方がありません

使い回しがある場合、1番目はさらに効きます。1つのアプリから漏れると何個に波及するかはSSOの記事で数えていて、平均23.9個でした。

置き換えたもの

OAuth 2.0では、語の代わりに引換券を渡します。引換券には範囲と期限をつけられます。

この2つがつくことで、上の4つのうち3つが解けます。残る1つ、複製の問題は引換券についても起こります。

出典RFC 6749「The OAuth 2.0 Authorization Framework」2026-08-18 確認
Third-party applications are required to store the resource owner's credentials for future use, typically a password in clear-text.
原文RFC 6749「The OAuth 2.0 Authorization Framework」 この内容の有効期限2027-02-18

アプリが求めた権限のうち、90日で一度も使われなかったのは47.5%だった

求める側の見積もりは多めになります。渡す側で減らしてよいと仕様も定めています。

OAuth 2.0では、求められた範囲をそのまま渡す必要がありません。仕様の規定はこうです。

認可サーバーは、方針または資源の持ち主の指示に基づいて、依頼側が求めた範囲を全部または一部、無視してよいというものです。

では、どれだけ減らせるのか。求めた権限と実際に使った権限を分けて数えました。

90日ぶんの利用を見る

操作の種類を60個、アプリを40個としました。アプリごとに求める権限と使う権限を作ります

text
操作の種類 60個・アプリ 40個。90日ぶんの利用を見る
1つのアプリが求める権限は平均 5.0個、そのうち実際に使うのは平均 2.6個

引換券に載せる範囲      漏れたとき行える操作  全体に対する割合  求めたのに使わない権限
全部載せる                                  60.0個            100.0%                    0.0個
求めた通りに載せる                               5.0個              8.4%                    2.4個
使った分だけに絞る                               2.6個              4.4%                    0.0個

全部載せると60個です。引換券が1つ漏れれば、何でもできます。

求めた通りに載せると5.0個、全体の8.4%になります。ここまでは範囲を区切るだけで効きます。

そこからさらに半分

右端の列を見てください。求めた5.0個のうち2.4個は90日間使われませんでした。

割合にして47.5%です。求める側は、将来使うかもしれない分まで含めて求めます。

使った分だけに絞れば2.6個・4.4%まで落ちます。求めた通りに渡す場合の半分です。

そのためには記録が要ります。実際に使われた操作を残しておかないと、どれを外せるか分かりません

求めた分の半分は、90日たっても使われない。

操作の種類 全60個を100%とする(合計 60個)求めて使っ求めたが使わなかった91.7%求めなかったアプリ40個・90日ぶんの実測。全部載せるとこの3つすべてが引換券に載る。
図1 ── 操作60種のうち、引換券に載る範囲
出典RFC 6749「The OAuth 2.0 Authorization Framework」2026-08-18 確認
The authorization server MAY fully or partially ignore the scope requested by the client, based on the authorization server policy or the resource owner's instructions.
原文RFC 6749「The OAuth 2.0 Authorization Framework」 この内容の有効期限2027-02-18

引換券そのものが資格情報なので、扱いは語と同じ

範囲と期限がついた分だけ被害は小さくなります。ただし持てば使えることは変わりません。

OAuth 2.0の引換券は、仕様の上でも資格情報として扱われます。アクセストークンとは、保護された資源へ到達するために使われる資格情報であるという定義です。

資格情報である以上、持っている側が使えます。誰が持っているかを確かめる仕組みは、既定では入っていません。

どこを通るか

引換券は、発行されてから使われるまでにいくつかの場所を通ります。通る場所の数だけ、漏れる機会があります

だから範囲と期限が効きます。前の計測でいえば、漏れたときに行える操作が60個か2.6個かという違いです。

引換券は語の代わりに渡り、範囲の分だけ使える。

利用者外部のアプリ認可する側資源を持つ側この範囲でよいか尋ねる5.0個を要求許可を伝える範囲を確認引換券を渡す範囲を絞れる引換券で操作する範囲の中だけ往復 0 回 / 4 段赤枠の段で範囲を減らせる。求められた5.0個をそのまま渡すか、使った実績の2.6個に絞るかを決められる。
図2 ── 引換券が発行されてから使われるまで

期限と作り直し

期限を短くすれば、漏れたときに使える時間が減ります。ただし作り直しの回数が増えます

この釣り合いはパスキーの記事で数えていて、15分から60分にしても入力し直しは8%しか減りませんでした。

引換券の場合は、作り直しを自動でできる分だけ短くしやすいものです。利用者の手を止めずに期限を縮められます

余談 この計測での注意

求めた権限のうち実際に使う割合(0.55)は式で置いた値で、実在の調査の値ではありません。操作60種・アプリ40個という規模も置いたものです。実際の連携では、権限の粒度が粗ければ求めた通りの5.0個がもっと大きくなり、絞れる幅も変わります。ここで見せているのは、求めた範囲と使う範囲が別物で、その差が記録を取らなければ見えないという関係です。

出典RFC 6749「The OAuth 2.0 Authorization Framework」2026-08-18 確認
Access tokens are credentials used to access protected resources.
原文RFC 6749「The OAuth 2.0 Authorization Framework」 この内容の有効期限2027-02-18

よくある質問

OAuth 2.0は何を解こうとしていますか
語を預ける形をやめることです。仕様は、外部のアプリが利用者の語を平文で保管する必要があった状況を問題として挙げています。
権限はどこまで絞れますか
この計測では60個が5.0個になり、実際に使った分に絞れば2.6個でした。
求めた権限は全部要りますか
この計測では47.5%が90日間使われませんでした。求める側の見積もりは多めになります。
権限を減らすのは誰ですか
渡す側でも減らせます。仕様は、求められた範囲を全部または一部無視してよいと定めています。

まとめ

  • 語を渡さない
  • 権限は範囲を区切る
  • 求めた分の半分は使われない
  • 渡す側でも減らせる

今日から始められること

  1. 連携しているアプリが求めた権限を並べる
  2. そのうち実際に使われた操作を記録する
  3. 使われていない権限を外す
  4. 引換券の有効期限を確かめる

実務で組んだOAuth 2.0のワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る