TERM 022
JWT
署名付き情報を運ぶ、コンパクトなトークン形式
JWTは、JSON形式の主張をURL安全な文字列として表し、署名または暗号化して受け渡すための形式です。Web認証では署名付きトークンとしてよく使われます。
署名付きの情報をコンパクトに受け渡すトークン形式の全体像。
CONTENTSこの記事の目次+
01 — DEFINITION
JWTとは
何か
JWTは、JSON形式の主張をURL安全な文字列として表し、署名または暗号化して受け渡すための形式です。Web認証では署名付きトークンとしてよく使われます。
02 — HOW IT WORKS
仕組みを
3段階で見る
細部へ入る前に、入力から結果までの役割を順番に捉えます。
主張を発行
発行者、主体、有効期限などのクレームをペイロードへ格納する。
→署名を付ける
ヘッダーとペイロードに対して鍵で署名を行い、改ざんを検知できる形式にする。
→受信側で検証
署名、発行者、受信者、期限を確認して利用する。
JWTを理解するときの、最小の処理単位です。
03 — ESSENTIALS
押さえるべき
3つの要点
名前だけでなく、この3点の関係まで理解すると実装へつなげやすくなります。
方式の情報
トークン種別と署名アルゴリズムなどを示します。
属性情報の集合
sub(主体)、iss(発行者)、aud(対象者)、exp(有効期限)などのクレームを保持します。
改ざん検知
内容が発行後に変更されていないことを検証します。
04 — REAL WORLD EXAMPLE
APIがアクセストークンを検証する
認可サーバーが期限付きJWTを発行し、APIが受け取ります。
- 01
信頼する公開鍵で署名を検証する
- 02
iss(発行者)とaud(対象者)が正しいか確認する
- 03
exp(有効期限)と必要なスコープを確認する
05 — WATCH OUT
理解するときの
注意点
便利な仕組みほど、守備範囲と失敗の前提を明確にします。
ペイロードは暗号化されていない
署名付きJWTの中身はBase64デコードで誰でも読めるため、パスワードなどの機密情報は含めません。
署名検証だけで安心しない
署名の正当性だけでなく、有効期限、発行者、対象者など必要なクレームの妥当性まで必ず検証します。
IN ONE SENTENCE
JWTとは?
署名付きの情報をコンパクトに受け渡すトークン形式。
