RFC 7519: JSON Web Token(JWT)
RFC 7519 は、JSON 形式でクレーム(主張)を表現するためのトークン仕様です。このドキュメントでは、JWT の構造と使用方法を解説します。
第1部: 概要編
JWT とは何か?
JWT(JSON Web Token、ジョットと読む)は、2 者間で情報を安全にやり取りするためのコンパクトで URL セーフなトークン形式です。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
└─────────────┬─────────────┘.└───────────────────────────┬───────────────────────────┘.└──────────────────┬───────── ─────────┘
Header Payload Signature
JWT の用途
| 用途 | 説明 |
|---|---|
| アクセストークン | OAuth 2.0 のアクセストークンとして使用 |
| ID トークン | OpenID Connect でユーザー情報を伝達 |
| クライアント認証 | private_key_jwt / client_secret_jwt |
| 情報交換 | サービス間で署名付きデータをやり取り |
JWT の特徴
| 特徴 | 説明 |
|---|---|
| コンパクト | Base64URL エンコードで URL やヘッダーに含めやすい |
| 自己完結 | トークン自体に必要な情報が含まれる |
| 検証可能 | 署名により改ざんを検知できる |
| 暗号化可能 | JWE を使えば内容を秘匿できる |
第2部: 詳細編
JWT の構造
JWT は 3 つのパートをドット(.)で連結した文字列です。
Header.Payload.Signature