OAuth 2.1 と 2.0 で適当に diff をとってみた
at 2020-11-12 14:51 (UTC)
最近は OAuth, OpenID Connect, FIDO とすっかり AuthN, AuthZ をがっつり勉強しております。
んで、7月末に WG Draft が出た The OAuth 2.1 Authorization Framework があるわけですが、勉強がてら OAuth v2.1 と OAuth v2.0 の diff をとってみた。 diff の内容はコチラ
まあ、Section 12. を読めば大体わかるんですがね。
基本的にこのドラフトは下記の文書を統合した物です。
- RFC6749 - OAuth 2.0
- RFC6750 - Bearer Token Usage
- RFC7636 - Proof Key for Code Exchange
- RFC8252 - OAuth 2.0 for Native Apps
- OAuth 2.0 for Browser-Based Apps
- OAuth Security Best Current Practice
主な変更点はこちら。ただ、足りてないと思う。クライアントタイプが3つになるとかかなりでかい変更なのに Section 12. では触れられてないし。
- Authorization Code Grant を PKCE で拡張した
- Implict Grant を廃止
- Resource Owner Password Credentials Grant を廃止
- URI のクエリストリングでの bearer トークンの削除
- リフレッシュトークンは sender-constrained もしくはワンタイムトークンとすべき
BCP バージョンが上がった 16 が出ているし、Browser-Based Apps にいたっては Fix したら持ってくるとか気の長いことを言っているのでまだまだ変わりそう。
あと、クライアントタイプが増えているのはやっぱり気になる。confidential の定義が変わるのはほかのいろんなドキュメントに影響を与えるし、認可サーバに身元が確認されたクライアント なんてしれっと書いてあるけど、これは 認可サーバはクライアントの身元を確認する という要件が増えているとも取れる。public と confidential の定義は変えずに身元が確認された confidential クライアントを trusted とか certified とかにするのじゃダメだったんだろうか?
Device Flow は取り込まれずに例としてあげられているだけ、app2app や CIBA なんかは OpenID Connect 由来だからか全く触れられていない
あくまでも統合したものなので、この文書を起点にドラスティックな変更が現れることはなさそうな気がする。いや、クライアントタイプな変更はかなりドラスティックな気もする
まあ、まだ 00 なので、今後に注目ですね