PUBLIC
SECURITYジョット6 MIN READ

TERM 022

JWT

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

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

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

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

CONTENTSこの記事の目次

01 — DEFINITION

JWTとは
何か

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

02 — HOW IT WORKS

仕組みを
3段階で見る

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

INPUTPROCESSOUTPUT
01ISSUE

主張を発行

発行者、主体、有効期限などのクレームをペイロードへ格納する。

02SIGN

署名を付ける

ヘッダーとペイロードに対して鍵で署名を行い、改ざんを検知できる形式にする。

03VERIFY

受信側で検証

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

PROCESS

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

03 — ESSENTIALS

押さえるべき
3つの要点

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

01HEADER

方式の情報

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

02PAYLOAD

属性情報の集合

sub(主体)、iss(発行者)、aud(対象者)、exp(有効期限)などのクレームを保持します。

03SIGNATURE

改ざん検知

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

04 — REAL WORLD EXAMPLE

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

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

SCENARIO / JWTSTEP BY STEP
  1. 01

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

  2. 02

    iss(発行者)とaud(対象者)が正しいか確認する

  3. 03

    exp(有効期限)と必要なスコープを確認する

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

05 — WATCH OUT

理解するときの
注意点

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

01

ペイロードは暗号化されていない

署名付きJWTの中身はBase64デコードで誰でも読めるため、パスワードなどの機密情報は含めません。

02

署名検証だけで安心しない

署名の正当性だけでなく、有効期限、発行者、対象者など必要なクレームの妥当性まで必ず検証します。

IN ONE SENTENCE

JWTとは?

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

KEEP EXPLORING

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