1. Introduction (はじめに)
元のOAuth 2.0認可フレームワーク (OAuth 2.0 Authorization Framework) [RFC6749] 仕様は、アクセストークン (Access Token) の特定の形式を義務付けていません。これは多くの重要なシナリオにおいて依然として完全に適切ですが、市場での使用状況から、多くの商用OAuth 2.0実装が、認可サーバー (Authorization Server) のさらなる関与なしにリソースサーバー (Resource Server) が直接解析および検証できる形式を使用してアクセストークンを発行することを選択したことが示されています。このアプローチは、認可サーバーとリソースサーバーが同じ場所にない、同じエンティティによって運用されていない、または何らかの境界で分離されているトポロジーで特に一般的です。執筆時点では、多くの商用実装がJSON Web Token (JWT) [RFC7519] 形式を活用しています。
多くのベンダー固有のJWTアクセストークンは、JWT クレーム (Claim) を使用して、共通のユースケースセットをサポートするために必要な情報を伝達するという同じ機能的レイアウトを共有しています。トークン検証、スコープ (Scope) と権限 (Entitlement) の形式での認可情報の転送、サブジェクト (Subject) に関する識別情報の保持などです。相違点は、主に同じエンティティを表すために使用されるクレーム名と構文に限定されており、これは、共通のクレームセットと検証ルールを標準化することによって相互運用性を容易に達成できることを示唆しています。
アクセストークンが特定の情報に関連付けられているという仮定は、商用実装だけに現れるものではありません。OAuth 2.0ファミリーのさまざまな仕様 (リソース指標 (Resource Indicator) [RFC8707]、OAuth 2.0ベアラートークン使用 (Bearer Token Usage) [RFC6750] など) は、アクセストークンにオーディエンス (Audience) などのスコープメカニズムの存在を仮定しています。イントロスペクション (Introspection) に関連する仕様ファミリーも、アクセストークンが保持する、または少なくとも関連付けられることが期待される基本的な情報セットを間接的に示唆しています。
本仕様は、今後のプロプライエタリなJWTアクセストークンレイアウトの代替として、標準化され相互運用可能なプロファイル (Profile) を提供することを目的としています。共通の必須および任意のクレームセットを定義することに加えて、このプロファイルは、認可要求パラメータが発行されたJWTアクセストークンの内容をどのように決定するか、認可サーバーが発行するJWTアクセストークンに関連するメタデータをどのように公開できるか、およびリソースサーバーが受信したJWTアクセストークンをどのように検証すべきかについて明確な指針を提供します。
最後に、本仕様は、JWT形式を使用してアクセストークンを表現する際のナイーブな使用で発生する可能性のある一般的な誤りやアンチパターンを防ぐことを目的としたセキュリティおよびプライバシーに関する考慮事項を提供します。
注意: 本文書と [RFC7523] の両方がOAuth2フレームワークのコンテキストでJSON Web Tokenを使用していますが、2つの仕様は意図とメカニズムの両方で異なります。[RFC7523] はJWTベアラートークン (JWT Bearer Token) を使用してアクセストークンを要求する方法を定義しているのに対し、本文書はアクセストークンをJWT形式でエンコードする方法を説明しています。
1.1. Requirements Notation and Conventions (要求事項の表記と規約)
本文書におけるキーワード "MUST" (しなければならない)、"MUST NOT" (してはならない)、"REQUIRED" (必須である)、"SHALL" (しなければならない)、"SHALL NOT" (してはならない)、"SHOULD" (すべきである)、"SHOULD NOT" (すべきでない)、"RECOMMENDED" (推奨される)、"NOT RECOMMENDED" (推奨されない)、"MAY" (してもよい)、および "OPTIONAL" (任意である) は、BCP 14 [RFC2119] [RFC8174] に記載されているように解釈されるものとします。ただし、ここに示すように、すべて大文字で表示される場合に限ります。
1.2. Terminology (用語)
JWTアクセストークン (JWT access token): JWT形式でエンコードされ、本仕様に記載されている要件に準拠したOAuth 2.0アクセストークン。
本仕様は、OAuth 2.0認可フレームワーク (The OAuth 2.0 Authorization Framework) [RFC6749] で定義されている用語 "access token" (アクセストークン)、"refresh token" (リフレッシュトークン)、"authorization server" (認可サーバー)、"resource server" (リソースサーバー)、"authorization endpoint" (認可エンドポイント)、"authorization request" (認可要求)、"authorization response" (認可応答)、"token endpoint" (トークンエンドポイント)、"grant type" (グラントタイプ)、"access token request" (アクセストークン要求)、"access token response" (アクセストークン応答)、および "client" (クライアント) を使用します。