JWT(JSON Web Token)とは
JWT(JSON Web Token)とは、「この利用者のIDはこれで、有効期限はいつまで」といった情報をJSON形式で表し、改ざんを検知できる署名を付けて一本の文字列にした、受け渡し用のデータ形式です。
平易に言えば「発行元の印鑑が押された、持ち運べる小さな証明書」です。受け取った側は印鑑(署名)を確かめるだけで、その中身が発行元によって書かれ、途中で書き換えられていないことを確認できます。
名前は JSON Web Token の頭文字で、「ジョット」と読まれることもあります。インターネット技術の標準化団体によって仕様が定められており、多くのプログラミング言語でライブラリが用意されています。
仕組み・ポイント
JWTはドット(.)で区切られた三つの部分からできています。
| 部分 | 中身 | 例 |
|---|---|---|
| ヘッダー | 署名の方式などのメタ情報 | 使っている署名アルゴリズム |
| ペイロード | 伝えたい情報(クレーム) | 利用者ID、発行者、宛先、有効期限 |
| 署名 | ヘッダーとペイロードから計算した値 | 発行元の鍵で作った署名 |
ヘッダーとペイロードはBase64URLという方法で文字列に変換されているだけで、暗号化されているわけではありません。誰でも中身を読めます。JWTが保証するのは「中身が正しい発行元のもので、書き換えられていない」ことであり、「中身を秘密にする」ことではない、という点が最も重要です。
使われ方として多いのは次の二つです。
- OpenID ConnectのIDトークン:ログインした本人の証明として、認証サービスから自社アプリへ渡される
- APIのアクセストークン:ログイン後、スマホアプリやブラウザがAPIを呼ぶたびに添えて送る許可証
サーバーは署名を検証すれば、毎回データベースに問い合わせなくてもリクエストの持ち主を判断できます。複数のサーバーやサービスで認証情報を共有しやすいことが、JWTが広く使われる理由です。
実務での使い方・具体例
ある会社が、会員向けのスマホアプリとWeb版を同じバックエンドで提供する場面を考えます。
ログインに成功すると、サーバーは有効期限の短いJWT形式のアクセストークンと、期限の長いリフレッシュトークンを発行します。アプリはAPIを呼ぶたびにアクセストークンを送り、サーバーは署名と有効期限を確認して処理します。アクセストークンが切れたら、リフレッシュトークンで新しいものを受け取ります。
設計の打ち合わせでは、次のような項目を決めます。
- ペイロードに入れる情報(利用者ID、ロールなど最小限にする)
- アクセストークンとリフレッシュトークンの有効期限
- トークンの保存場所(ブラウザ、アプリの安全な保管領域など)
- ログアウトや強制停止をどう実現するか
- 署名の鍵をどこで管理し、どう入れ替えるか
社内の複数システムをつなぐ場面でも使えます。たとえば受注システムが在庫システムのAPIを呼ぶとき、受注システム側で発行した短い期限のJWTを添え、在庫システムは公開鍵で署名を確かめるだけで呼び出し元を判断する、という構成です。システム同士がデータベースを共有しなくて済むため、責任範囲を分けたまま連携できます。
外部の認証サービスを使う場合は、発行と検証の多くを任せられます。自前で発行する場合は、上の項目を一つずつ仕様として残しておくと、保守や引き継ぎが楽になります。
よくある誤解と注意点
- JWTは暗号化ではない:ペイロードは誰でも読めます。パスワードや個人情報など、見られて困るものを入れてはいけません。
- 発行したJWTはすぐには無効にできない:署名が正しく期限内なら有効と判断されます。アカウント停止を即時に反映したい場合は、期限を短くする、無効リストを持つなどの仕組みが必要です。
- 署名の検証を省略しない:中身を読むだけで信用する実装は、なりすましを許します。署名方式の指定も含め、ライブラリの推奨どおりに検証します。
- 保存場所で攻撃への強さが変わる:ブラウザのどこに保存するかで、スクリプトによる盗み出しやなりすまし送信への強さが変わります。XSS対策と合わせて検討します。
- ロールを入れすぎない:ペイロードに権限を詳しく入れると、権限変更が期限切れまで反映されません。細かな権限判定はサーバー側で行う設計が安全です。
関連用語
- OpenID Connect:IDトークンとしてJWTを使う認証の標準仕様
- OAuth:アクセストークンを発行する仕組み。トークンの形式としてJWTが使われることがある
- REST API:JWTを添えて呼び出すことが多いAPIの形式
- 暗号化:JWTの署名とは目的が異なる、中身を秘密にするための技術
- 実践記事:会員ログイン機能の実装:パスワード管理・SNSログインの注意点
Otsumuに相談できること
会員サイトやスマホアプリの認証まわりは、後から作り直すと影響範囲が大きい部分です。トークンの設計、外部認証サービスの選定、ログアウトや強制停止の扱いまで、運用を見据えて設計します。詳しくは会員サイト開発をご覧ください。
既存システムの認証に不安がある場合の点検のご相談も歓迎です。30分の無料相談で現状を伺います。
執筆:Otsumu株式会社 / 編集日 2026.10.01