開発ツールを整える
中級JWTをデコードを整える。
= JWTを貼ると中身を読める(署名は確認しません)
JWT が初めての方は、先に そもそも JWT とは・どんな場面で使うか をどうぞ。
トークンの3つの部分
発行から期限までの時間の帯
— — このトークンには時刻クレーム(iat / nbf / exp)がありませんでした。
SIGNATURE(署名)— このツールは署名を検証しません
署名の検証には鍵(共通鍵 or 公開鍵)が必要です。このツールは鍵を扱わない デコード専用なので、署名が正しいか・改ざんされていないかは判定しません。 「中身を読む」ためのツールだとご理解ください。署名の生データ(base64url)だけ参考に表示します:
⚠ JWT は「秘密情報」です
- ✓このツールは送信ゼロ。貼ったトークンはあなたのブラウザの中だけで処理し、totonoe.tech を含めどこにも送りません。だから本番のトークンも安全に覗けます。
- ✕他人のトークンを勝手に貼らない。有効な JWT はそのままログインできる「鍵」と同じで、なりすましに使えます。
- ✕本物のトークンをスクショ・チャット・課題管理ツールに貼らない。payload は誰でもデコードできる=中身は暗号化されていません。
alg header 署名アルゴリズム。HS256(共通鍵)/ RS256・ES256(公開鍵)/ none(署名なし)。 typ header トークンの型。ふつうは "JWT"。 kid header 鍵 ID。検証側が「どの公開鍵で確かめるか」を選ぶ目印。 iss payload 発行者。このトークンを発行したサービス。 sub payload 主体。トークンが指すユーザー/対象の ID。 aud payload 対象者。このトークンを受け取るべき相手(API など)。 jti payload JWT ID。トークンを一意に識別する値(再利用検知に)。 iat payload 発行時刻(Unix 秒)。いつ作られたか。 nbf payload 有効化時刻(Unix 秒)。この時刻より前は無効。 exp payload 有効期限(Unix 秒)。この時刻を過ぎると無効。 そもそも JWT とは
「この人はログイン済みです」を、書き換えられない形で持ち歩く通行証。
JWT は JSON Web Token(ジェイソン・ウェブ・トークン、「ジョット」と読まれることもあります)の略で、RFC 7519 で定められた形式です。ログインしたあとにサーバーが発行する、「この人は誰で、いつまで有効か」を書いた短い文字列です。入場チケットのようなもので、以降のアクセスではこれを見せるだけで本人確認ができます。
身近なたとえなら、改ざん防止のシールを貼ったはがきです。書かれた内容は配達する人を含め誰でも読めますが、書き換えるとシールが合わなくなって気づかれます。つまり JWT は中身は暗号化されていない(誰でも読める)けれど、署名によって改ざんは見破れる仕組みです。そのため、パスワードなど人に見せたくない情報は入れてはいけません。
どこで・どんな場面で使うか
-
Web サービスのログイン後の API 呼び出し
ログインで受け取った JWT を、リクエストのたびに
Authorizationヘッダに付けて送り、「ログイン済み」を証明します。 -
スマホアプリとサーバーのやりとり
アプリはトークンを保持し、期限が切れたら再取得します。サーバー側に状態を持たなくてよい、という利点もあります。
-
シングルサインオン(SSO)やソーシャルログイン
OpenID Connect の ID トークンは JWT 形式です。「Google でログイン」の裏側にも出てきます。
-
マイクロサービス間の通信
複数のサーバーが連携するとき、「誰の依頼か」を JWT で次々に引き継ぎます。
-
ログイン不具合の調査
「期限切れ」「対象が違う」などの原因は JWT の中身に書かれています。貼って読めば切り分けが早く進みます。
知らないと何が困るか
- 「暗号化されているから安全」と思い込む。中身は誰でも読めます。個人情報や秘密を JWT の中に入れると、そのまま見えてしまいます。
- トークンを人に見せてしまう。JWT は持っている人が本人として扱われる通行証です。チャットや画面共有で貼り付けると、悪用される恐れがあります。
- 認証エラーの原因探しが長引く。有効期限(exp)の切れや発行元の違いを読み取れないと、「ログインできない」の理由が分かりません。
上のツールにトークンを貼ると、中身が読めることを確かめられます。この確認の安全な練習には、付属のサンプルを使ってください。
JWT の仕組み・4つ
「読める」けれど「書き換えられない」── 署名が守るのは中身ではなく改ざん。
- 1
3つの部分を「.」でつなぐ
JWT は header(型・署名方式).payload(中身).signature(署名) の3部構成。それぞれ Base64URL でエンコードされているだけで、暗号化はされていません。だから誰でも中身を読めます。
- 2
payload に「主張(クレーム)」が並ぶ
誰のトークンか(sub)、誰が発行したか(iss)、いつまで有効か(exp)などが入ります。サーバはこれを読んで「このユーザーは誰で、何が許されているか」を判断します。
- 3
署名は「改ざん検知」のためのもの
payload を書き換えると署名が合わなくなり、サーバが弾きます。署名は中身を隠すためではなく、勝手な書き換えを防ぐため。検証には鍵が要るので、このツール(鍵なしデコード)では行いません。
- 4
時刻は Unix 秒(NumericDate)
iat / nbf / exp は「1970年1月1日からの秒数」で入ります。人間には読みづらいので、このツールが 日本時間(JST)と UTC に変換し、exp が現在より前なら「期限切れ」と判定します。
🔒 デコードはすべてあなたのブラウザの中(純 JavaScript・Base64URL → UTF-8 → JSON)で完結します。貼り付けたトークンはサーバに送られません(送信ゼロ)。署名の検証は行いません(鍵が要るデコードのみ)。
このツールについて
JWT(JSON Web Token)を貼ると、中身(header と payload)を整形 JSON で読みやすく表示します。iat / exp / nbf などの時刻は日本時間に直し、有効期限切れかも判定。トークンはこの端末から一切出ません(送信ゼロ)だから、本番のトークンも安全に覗けます。※署名の検証はしません(鍵なしのデコードのみ)。
JWTを貼ると中身を整形JSONで表示。時刻クレームを日本時間に直し期限切れも判定。送信ゼロ・署名検証なし。
🔰 かんたんに言うと
ログイン状態を表す「通行証(トークン)」の中身を読むツールです。
主な機能
- header / payload を整形JSON表示(Base64URL→UTF-8)
- iat / exp / nbf を JST・UTC・相対時間に変換
- exp<now で期限切れ判定(nbf 未到来も検知)
- alg / typ / kid / iss / sub / aud / jti の意味を一言
- 送信ゼロ=本番トークンも安全に覗ける
- 壊れたBase64・非JSONに優しいエラー
- トークンを3色に分け、発行から期限までを時間の帯で表示
よくある質問
Q. 貼ったJWTはどこかに送信されますか?
A. いいえ。デコードはすべてブラウザ内(純JavaScript)で完結し、どこにも送信しません(送信ゼロ)。だから本番トークンも安全に確認できます。
Q. 署名が正しいか検証できますか?
A. できません。署名検証には鍵(共通鍵または公開鍵)が必要で、本ツールは鍵を扱わないデコード専用です。中身を読むためのツールです。
Q. payloadは暗号化されていますか?
A. いいえ。Base64URLでエンコードされているだけで暗号化ではありません。誰でもデコードして読めるため、機密はpayloadに入れません。
Q. exp が「期限切れ」と出ました。どういう意味ですか?
A. exp(有効期限・Unix秒)が現在時刻より前であることを示します。そのトークンはすでに失効しています。
Q. 「Bearer 」付きで貼っても大丈夫ですか?
A. はい。先頭の「Authorization:」「Bearer 」や前後の空白・改行は自動で除去してからデコードします。
Q. 他人のトークンを貼ってもいいですか?
A. 避けてください。有効なJWTはログインできる「鍵」と同等で、なりすましに使えます。本物のトークンはスクショ・チャット等への貼り付けも厳禁です。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。