「認証情報のやり取りには、JWT(ジョット)を使うのがモダンですね」

エンジニアさんの会話で出た、この可愛らしい響きの言葉。私は「ジョット……? なんだか、ショット(Shot)の親戚かな? お酒でも飲んで景気をつけるのかな?」と、お祭り騒ぎな現場を想像していました。

とりあえず 「ジョットいきましょう!」 と明るく答えてみましたが、相手からは「……いや、データの詰め合わせ(トークン)のことだよ」と教えられ、またしても「空耳パニック」で赤面する羽目に……(笑)。

実は「JWT」は、ネット上で「私は誰で、どんな権利を持っているか」をコンパクトに、かつ安全に持ち運ぶための「魔法のチケット」のことです。今回は、お祭りの 「引換券」 に例えて、その正体を3分でやさしく解説します!

JWTとは? 一言でいうと「中身が偽物じゃないことを証明できる『デジタルの引換券』」

結論から言うと、JWT(JSON Web Token:ジョットと読みます)とは、「情報をJSON(ジェイソン)という形式でまとめ、さらにデジタル署名を付けることで、改ざん(書き換え)ができないようにした小さなデータ(トークン)」 のことです。

お祭りの 「プレミアム飲食券」 に例えてみましょう。

  • 普通のメモ:自分で「焼きそば1個無料」と書いた紙。誰でも偽造できてしまう。
  • JWT(飲食券)「『この人は焼きそば1個とビール1杯が無料です』という内容が書かれ、裏面に『主催者の本物のハンコ』が押された特別な券」。

この「飲食券(JWT)」を持っていれば、お店の人は裏面のハンコ(署名)を見るだけで、「あ、これは間違いなく主催者が発行した本物だ!」と一瞬で判断でき、あなたにサービスを提供できます。

いちいち「本当にこの人は権利があるの?」と本部に問い合わせる必要がないため、やり取りが非常にスムーズで軽快になるのが、JWTの最大の特徴です。

ビジネスの現場でJWTという言葉が出る場面

Webアプリのログイン維持や、APIの認証シーンで頻繁に登場します。

1. 「ログイン後のアクセスにはJWTを使って、ステートレス(状態を持たない)な設計にしよう」

意味:
「サーバーというお店側で『あの人、今何してたっけ?』といちいち覚えるのをやめて、お客さんに『私はこういう者で、こんな権利があります!』という完璧な引換券(JWT)を常に持ってもらうようにしよう」ということです。

2. 「JWTのペイロード(中身)にユーザーIDを含めておいてね」

意味:
「引換券の表面(中身)に、『会員番号:123番』と書いておいて。そうすれば、誰が券を持ってきたか一目で分かるからね」ということです。

3. 「シークレットキーが漏れると、JWTを偽造されちゃうから厳重に管理して」

意味:
「引換券の裏に押す『主催者の本物のハンコ(署名の鍵)』が盗まれたら、誰でも偽の券を作り放題になっちゃうから、ハンコは絶対に誰にも見せないでね」ということです。

なぜJWTが選ばれるのか?

「普通のIDと何が違うの?」という疑問。効率の良さで比較しました。

比較ポイント従来のID(セッション)JWT(トークン)
サーバーの負担「覚える」 のが大変「見るだけ」 なので楽
スピード本部に確認する時間がかかるその場ですぐ判断できる
拡張性複数の店(サーバー)で共有しにくいどの店でも券を見せるだけ
たとえ話顔なじみの店員さん共通のプレミアム引換券

「サーバーというお店が、自分でお客さんのことを覚えるのをやめて、お客さんに証明書を持ってもらう」という逆転の発想が、今のネット社会にフィットしているのです。

まとめ

この記事のポイントは次のとおりです。

  • JWTは、情報をコンパクトに、安全に運ぶための「魔法のチケット」
  • 「デジタル署名」がついているため、中身を書き換えることができない
  • サーバーがいちいち「過去の記憶」を辿らなくて済むため、動きが軽快になる

今すぐできる確認方法

IT業界の「身分証」の様子を、少しだけ覗いてみましょう。

  1. 「jwt.io」: このサイトへ行って、適当なサンプルデータを貼り付けてみてください。中身が3つのパーツ(ヘッダー、中身、署名)に分かれているのが一目で分かります!
  2. ブラウザのデベロッパーツール: サイトにログインした状態で「Application」→「Local Storage」などを見ると、 eyJhbG... といった長い暗号のような文字がありませんか? それがあなたの「引換券(JWT)」かもしれません。
  3. 「ジョット」という響き: 会議で「ジョット」と聞こえたら、「あ、あのチケットのことだな」と心の中でニヤリとしてみる。

「JWT」という言葉を知るだけで、Webサービスが「裏側で必死に覚えている」場所から、「洗練されたチケットのやり取り」で動くスマートな空間に見えてきませんか?