個人的な調査のために OAuth 2.0 と JWT 関連 RFC を発行日順に並べた。
RFC6749 — The OAuth 2.0 Authorization Framework
2012 年 10 月
OAuth 1.0a に代わる新たな認証基盤 OAuth 2.0 のコアを規定しており、特筆すべき点がいくつかある。
access_token
の内容は規定されておらず、ベンダーに委ねられている- JWS でもなんでもいい
- リソースサーバーに
access_token
を渡す方法は規定されていない(同月発行の RFC6750 で規定された)
Authorization Grant
トークンエンドポイントでaccess_token
を発行してもらう際に使用できる Grant (許可証)は、提案中の拡張仕様を含めて 5 つある。
- Authorization Code Grant: RFC6749 – Section 1.3.1
grant_type=authorization_code
- Authorization Code Grant with PKCE
- Implicit Flow: RFC6749 – Section 1.3.2
- もともと CORS (Cross Origin Resource Sharing) が登場する以前の SPA で、POST リクエストを回避しつつ Access Token を得る"妥協案"として策定された
- CSRF 耐性が無い (RFC6819 - Section 4.4.2.5)ため、使うべきではない
- Resource Owner Password Credentials Grant: RFC6749 – Section 1.3.3
- 直接パスワードで認証する形式
- Client Credentials Grant: RFC6749 – Section 1.3.4
- クライアントシークレットでトークンを取得する形式。
- Device Grant: RFC Draft — OAuth 2.0 Device Authorization Grant
- 入力機器が無い場合もある組み込みデバイス向けの認証フロー
RFC6750 — The OAuth 2.0 Authorization Framework: Bearer Token Usage
2012 年 10 月
OAuth 2.0 において、access_token
をリソースサーバーに渡す手法を規定する。OAuth 2.0 JWT Bearer Token Flowではない。
手法として 3 つが挙げられている。
- Bearer Token (SHOULD)
- Form Encoded Parameters (SHOULD NOT)
- URI Query Parameters (SHOULD NOT)
OIDC — OpenID Connect Core 1.0
2014 年 11 月
OAuth 2.0 の上にいくつか仕様を足したサブセットで、OAuth (Authorization)に Authentication の機能を付与した画期的なプロトコル。
RFC7515 — JSON Web Signature (JWS)
2015 年 5 月
JSON ベースの署名プロトコル。
RFC7516 — JSON Web Encryption (JWE)
2015 年 5 月
JSON ベースの暗号化プロトコル。
RFC7517 — JSON Web Key (JWK)
2015 年 5 月
JWT の署名チェックに用いる公開鍵を配信するためのプロトコル。
RFC7518 — JSON Web Algorithms (JWA)
2015 年 5 月
JWS、JWE、JWK で利用されるアルゴリズム (alg)やその他プロパティを規定する。
RFC7519 — JSON Web Token (JWT)
2015 年 5 月
JWT は JSON を利用して Assertion を生成するための仕様。
RFC7521 — Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants
2015 年 5 月
任意の Assertion を OAuth 2.0 Client Authentication の Client Credentials として使ったり、あるいは Authorization Grant として Access Token と交換するための仕様。
トークンエンドポイントに強化されたクライアント認証を付与する。続く RFC で、それぞれ SAML と JWT を使用したパターンを規定している。
OAuth 2.0 JWT Bearer Token Flowとも呼ばれている。
- RFC7522 — Security Assertion Markup Language (SAML) 2.0 Profile for OAuth 2.0 Client Authentication and Authorization Grants (2015 年 5 月)
- RFC7523 — JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants (2015 年 5 月)
2015 年 5 月 https://tools.ietf.org/html/rfc7523
RFC Draft — JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens
2019 年 7 月
リソースサーバーへ渡す Access Token に JWT を使用することを定めている。