AI活用の教科書
セキュリティ設計開発ふつう3分で読了

JWT

JSON Web Tokenじぇいだぶりゅーてぃー

ひとことで言うと

サーバーが署名した「本人証明の通行証」を、改ざんできない形で持ち歩くしくみです。

📖 もうちょい詳しく

何が新しいの?

JWTは、「この人はログイン済みの本人です」という情報を、改ざんできない形でやり取りするためのしくみです。
昔ながらのやり方では、ログイン状態をサーバー側でずっと覚えておく必要がありました。利用者が増えたり、サーバーが何台にも分かれたりすると、その「覚えておく」作業が負担になります。そこで、本人の情報そのものを通行証にして持ち歩いてもらう、という発想で広まったのがJWTです。

どうやって動いてるの?

JWTは「ヘッダー」「中身(ペイロード)」「署名」の3つを、ピリオドでつないだ文字列です。
中身には「だれが」「いつまで有効か」といった情報が入っています。そこにサーバーだけが知っている秘密の鍵で 署名(中身が本物だと証明する印)をつけます。受け取ったサーバーは、この署名を確かめるだけで「途中で書きかえられていないか」を判定できます。中身は暗号化されているわけではないので、署名は「隠す」のではなく「改ざんを見破る」役だと考えると正確です。

何ができるの?

一度ログインすれば、毎回パスワードを送らなくても本人だと認めてもらえるようになります。
スマホアプリやWebサービスの裏側で、APIへのアクセスのたびにこのトークンを添えて「私は許可された本人です」と示す使い方が一般的です。サーバーが情報を覚えておかなくてよいので、たくさんのサーバーに処理を分けても扱いやすいという利点があります。

🌱 身近なたとえ

イベントの入場リストバンドで例えると、JWTは「受付で一度確認したら、あとは腕のバンドを見せるだけで通れる」しくみです。
バンドには「入場OK」「夜8時まで」などの情報が印刷されていて、係員はその場で本物かを見分けられます。中身は誰でも読めますが、勝手に書きかえると不正がすぐばれる——JWTの署名も、ちょうどこの「見ればわかる印」の役割を果たします。

✅ まず覚えるポイント

  • JWTは、本人だと証明する情報を持ち歩くための通行証
  • 「ヘッダー」「中身」「署名」の3部構成
  • 署名で「途中で書きかえられていないか」を確かめられる
  • 中身は暗号化されておらず、誰でも読める点に注意
  • ログイン状態をサーバーに覚えさせずに済むのが利点

🧭 よくある勘違い

JWTは暗号化されているから、中身を見られても安全?

ここはよく誤解されます。ふつうのJWTは「署名」はついていますが、中身そのものは暗号化されていません。
ピリオドで区切られた部分は、専用のツールを使えば誰でも読めてしまいます。ですから、パスワードやクレジットカード番号のような秘密の情報を中身に入れるのは避けるのが基本です。

一度発行したJWTは、すぐに無効にできる?

これは少し苦手な部分です。JWTは「サーバーが覚えておかない」ことが利点なので、逆に「この1枚だけ今すぐ取り消す」のが難しい場合があります。
そのため有効期限を短くしたり、別のしくみと組み合わせて取り消しに備えたりする工夫がよく使われます。

🧩 関連して覚えると楽な言葉

  • トークン: 本人や権限を示す「引換券」。JWTもその一種
  • OAuth: 権限を安全に預けるしくみ。やり取りにJWTがよく使われる
  • 認証: その人が本人かを確かめること。JWTが支える役割
  • ハッシュ化: 元に戻せない変換。署名づくりの土台で使われる

🏁 ひとことでまとめ

JWTは、サーバーが署名した「改ざんできない通行証」を本人に持ち歩いてもらうしくみです。
中身は隠されていない点だけ気をつければ、ログインのたびにパスワードを送らずに済む、便利な本人証明の道具だと覚えておくとよいです。