MS_OAuth20Extensions - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

OAuth 2.0 拡張

概要

OAuth 2.0 には、様々な拡張仕様がある。

補足(なぜ拡張が多いのか): RFC 6749(OAuth 2.0)は
フレームワーク」と自称している通り、意図的に穴を残した仕様である。
トークンの形式・クライアント認証の方法・エラーの詳細などが
実装依存になっており、そこを埋めるために多数の拡張が生まれた。

裏を返すと「素の RFC 6749 だけでは安全な実装にならない」ということで、
それを整理し直したのが OAuth 2.1
RFC 9700(Security BCP)である。

拡張のフロー

以下のような拡張フローがある。

スマホ向けフロー

  • スマホ向けベストプラクティス(RFC 8252 … OAuth 2.0 for Native Apps)
    OAuth 2.0 for Native Apps
  • 認可コード横取り攻撃への対抗策(RFC 7636 … OAuth PKCE

その他のデバイス向けフロー

「Redirect フロー」ではなく「Decoupled フロー」を使用。

補足: Device Authorization Grant は RFC 8628(2019)として標準化された。
TV・IoT 機器など入力手段が乏しい端末
向けで、
「画面にコードを出し、ユーザーは手元のスマホで認可する」流れ。

CIBA は OpenID Foundation の仕様で、
クライアント側から認可を開始し、ユーザーの端末に通知を飛ばす
(店頭決済など、ユーザーがブラウザを持っていない場面向け)。

新しい仕様

その他、新しい仕様も策定されている。

OAuth 2.0 拡張で追加された仕様

OpenID Connect で追加された仕様

Financial API (FAPI)で追加された仕様

その他の拡張仕様

補足(現在、実装で必須級の拡張): 数が多いので、
どれを押さえるべきかを整理しておく。

拡張 RFC 必要度
PKCE 7636 必須OAuth 2.1 で全クライアント)
Native Apps BCP 8252 モバイルなら必須
Security BCP 9700(2025) 必読。既知の攻撃と対策の総まとめ
Token Revocation 7009 ログアウト実装で必要
Token Introspection 7662 識別子型トークンを使うなら必要
Device Authorization 8628 TV / IoT なら
mTLS / DPoP 8705 / 9449 高保証・金融系
JAR / JARM / PAR 9101 / — / 9126 FAPI 準拠が要るなら
RAR 9396 細かい認可(送金額など)が要るなら

**RFC 9700(OAuth 2.0 Security Best Current Practice)**は、
本ページのような拡張仕様の一覧を「何をすべきか」の形で
まとめ直したものなので、最初に読む価値が高い。

参考


Tags: 移行, IT国際標準, 認証基盤, クレームベース認証, OAuth

⚠️ **GitHub.com Fallback** ⚠️