PUBLIC
SECURITYジョット6 MIN READ

TERM 019

JWT

署名付き情報を運ぶ、コンパクトなトークン形式

JWTは、JSON形式の主張をURL安全な文字列として表し、署名または暗号化して受け渡すための形式です。Web認証では署名付きトークンとしてよく使われます。

01ISSUE主張を発行
02SIGN署名を付ける
03VERIFY受信側で検証
OVERVIEW

署名付きの情報をコンパクトに受け渡すトークン形式の全体像。

CONTENTSこの記事の目次

QUICK OVERVIEW

30秒でつかむ

01HEADER

方式の情報

トークン種別と署名アルゴリズムなどを示します。

02PAYLOAD

主張の集合

sub、iss、aud、expなどのClaimを保持します。

03SIGNATURE

改ざん検知

内容が発行後に変更されていないことを検証します。

01 — DEFINITION

JWTとは
何か

JWTは、JSON形式の主張をURL安全な文字列として表し、署名または暗号化して受け渡すための形式です。Web認証では署名付きトークンとしてよく使われます。

02 — HOW IT WORKS

仕組みを
3段階で見る

細部へ入る前に、入力から結果までの役割を順番に捉えます。

INPUTPROCESSOUTPUT
01ISSUE

主張を発行

発行者、主体、期限などをpayloadへ入れる。

02SIGN

署名を付ける

HeaderとPayloadへ鍵で署名し、改ざんを検知できる形にする。

03VERIFY

受信側で検証

署名、発行者、受信者、期限を確認して利用する。

PROCESS

JWTを理解するときの、最小の処理単位です。

03 — ESSENTIALS

押さえるべき
3つの要点

名前だけでなく、この3点の関係まで理解すると実装へつなげやすくなります。

01HEADER

方式の情報

トークン種別と署名アルゴリズムなどを示します。

02PAYLOAD

主張の集合

sub、iss、aud、expなどのClaimを保持します。

03SIGNATURE

改ざん検知

内容が発行後に変更されていないことを検証します。

04 — REAL WORLD EXAMPLE

APIがアクセストークンを検証する

認可サーバーが期限付きJWTを発行し、APIが受け取ります。

SCENARIO / JWTSTEP BY STEP
  1. 01

    信頼する鍵で署名を検証する

  2. 02

    issとaudが期待値か確認する

  3. 03

    expと必要なscopeを確認する

RESULT発行元へ毎回問い合わせず、トークンの正当性と対象API向けかを判定できます。

05 — WATCH OUT

理解するときの
注意点

便利な仕組みほど、守備範囲と失敗の前提を明確にします。

01

Payloadは秘密ではない

署名付きJWTの中身は読めるため、パスワードなどを入れません。

02

署名だけで許可しない

期限、発行者、受信者、用途に必要なClaimまで必ず検証します。

IN ONE SENTENCE

JWTとは?

署名付きの情報をコンパクトに受け渡すトークン形式

KEEP EXPLORING

SECURITYOAuth掲載中SECURITYOIDC掲載中SECURITYAuthentication掲載中