JWT(JSON Web Token)とは

じぇいだぶりゅーてぃー

JSON形式の情報(クレーム)を、署名を付けて受け渡すための形式。「ヘッダ.ペイロード.署名」の3つの部分を、それぞれBase64URLで符号化して「.」でつなぐ。署名で改ざんの有無と発行元を確かめられるが、一般的な署名付きのJWTではペイロードは暗号化されていないので、秘密の情報は入れない。APIの認証に使うアクセストークンや、OpenID ConnectのIDトークンなどに使われ、有効期限(exp)を短くして使うことが多い。

「JWT(JSON Web Token)」は、1分野の2問の練習問題に出てきます(Web技術の基礎など)。

この用語の分野: Web技術の基礎

3つの部分

ヘッダには署名の方式(例えばHS256)と種類が入り、{"alg":"HS256","typ":"JWT"} をBase64URLで符号化すると eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 になります。ペイロードには、利用者の識別子(sub)、発行者(iss)、有効期限(exp)などのクレームが入ります。署名は、符号化したヘッダとペイロードを「.」でつないだものに対して、共通の秘密の鍵によるHMACや、公開鍵暗号の秘密鍵で作ります。

サーバでの確かめ方

JWTを受け取ったサーバは、署名が正しいかを鍵で確かめ、有効期限や宛先(aud)などのクレームが条件に合うかを調べます。ヘッダの alg の値をそのまま信用せず、サーバの側で決めた方式だけを受け付けることが大切です。署名を確かめれば、サーバはセッションの情報を保存していなくても、だれに発行したものかを判断できます。

使うときの注意

JWTは、発行した後に取り消すことが難しいので、有効期限を短くし、長く使う場合は更新用の別の値を使って発行し直す使い方が一般的です。ペイロードはだれでも読めるので、秘密の情報は入れません。ブラウザの中の保存する場所によっては、XSSで盗まれるおそれがあります。

JWT(JSON Web Token)の練習問題に挑戦

署名を付けた一般的なJWT(JSON Web Token)の説明として、正しいものはどれか。

  1. Aペイロードは署名の鍵で暗号化されているので、パスワードやクレジットカードの番号を入れて送っても、途中で読まれることはない
  2. B有効期限を過ぎたトークンでも、署名が正しければ改ざんはされていないので、サーバは受け付けなければならない
  3. Cヘッダ、ペイロード、署名をBase64URLで符号化して「.」でつないだもので、署名で改ざんを検出できるが、中身は暗号化されていない
答えと解説を見る

正解:C. ヘッダ、ペイロード、署名をBase64URLで符号化して「.」でつないだもので、署名で改ざんを検出できるが、中身は暗号化されていない

JWTは「ヘッダ.ペイロード.署名」の3つの部分からなり、ヘッダには署名の方式(例えばHS256)、ペイロードには利用者の識別子や有効期限(exp)などの情報(クレーム)が入ります。署名はヘッダとペイロードから秘密の鍵を使って作るので、受け取ったサーバは、中身が改ざんされていないことと発行元を確かめられます。ただし、Base64URLは暗号ではなく、だれでも元に戻して読めるので、秘密の情報は入れません。APIに送るときは、一般に Authorization: Bearer の後にトークンを付けて送ります。

よくある質問

JWTとセッションIDは、どちらを使うべきですか?

セッションIDは、サーバに保存した情報を探す手がかりにすぎず、ログアウトや無効化をサーバの側ですぐに反映できます。JWTは、サーバに情報を保存しなくても中身を確かめられるので、複数のサービスの間で受け渡すのに向いていますが、取り消しにくい弱点があります。1つのWebサイトのログインでは、セッションIDの方が扱いやすいことも多いです。

Base64URLとBase64は何が違いますか?

Base64URLは、URLの中で特別な意味をもつ「+」と「/」を「-」と「_」に置き換え、末尾の「=」を省くことが多いBase64の変種です。JWTは、URLやHTTPのヘッダにそのまま入れられるように、この形式を使います。どちらも暗号ではなく、だれでも元に戻せます。

解説の中の「JWT(JSON Web Token)」

「JWT(JSON Web Token)」が出てくる問題(2問)

  1. 署名を付けた一般的なJWT(JSON Web Token)の説明として、正しいものはどれか。
  2. OAuth 2.0とOpenID Connectの関係の説明として、正しいものはどれか。

Web技術の基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

OAuth イベントループ WebSocket HTTP HTTPステータスコード HTTPメソッド Cookie CORS(オリジン間リソース共有) サーバサイドレンダリング(SSR) JSON

用語集の一覧へ