- 標準化に向けて進んでいるOAuth2.1についてメモする。
OAuth 2.0
-
サードパーティアプリからHTTPサービスへのアクセスを可能にするための認可フレームワーク。
- 主にRFC 6749 OAuth Core (認可方式)と RFC 6750 Bearer Tokens(トークン利用方式)で構成される。
-
当初定義されていたものから、以下のような改善が加えられてきた。
- Proof Key Code Exchange(PKCE)の導入
- Implicit Grant の非推奨化
- Resource Owner Password Credentials Grant(ROPCG) の非推奨化
- Tokenのクエリ指定禁止
- Device Grantの追加
...
OAuth 2.1とは
-
改善が加えられてきたOAuth2.0の整理を目標に標準化が進められている仕様。
-
特徴
-
認可方式:次を基本とする。
* Authorization Code Grant + PKCE
* Client Credentials Grant
* Device Grant -
トークン指定方式:次を基本とする。
* HTTP Header
* POST Form Body
* ※クエリ指定禁止
-
認可方式:次を基本とする。
OAuth 2.0との違い
-
認可方式
- Authorization Code Grantを利用する際には、PKCE方式での利用を基本とする※RFC7636より
- Implicit Grantを廃止する※Security Best Current Practiceより
- Resource Owner Password Credentials Grantを廃止する※Security Best Current Practiceより
- リダイレクトURI検証時は完全一致判定を基本とする※Security Best Current Practiceより
- Bearer Tokenのクエリ指定を禁止する※Security Best Current Practiceより
- リフレッシュトークンは送信元を制限する、もしくは使用を1回限りとする※Security Best Current Practiceより
- クライアント種別に
credentialed
(クレデンシャルを保持しているが、認可サービスから存在を確認されていない)を追加。