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