メインコンテンツへスキップ

JWT デコーダー

JWT のヘッダーとペイロードをデコードし、クレームや有効期限を確認。

オンライン JWT デコーダー

JWT(JSON Web Token)はドットで区切られた 3 つの Base64URL 部分——ヘッダー・ペイロード・署名——から成ります。このJWT デコーダーは前の 2 つを読みやすい JSON に変換し、クレーム(sub・iss・exp など)や exp を人間可読の時刻で確認できます。認証のデバッグに便利です。すべてローカルでデコードします。

使い方

  1. 完全な JWT を入力欄に貼り付けます。
  2. デコードされたヘッダーとペイロードが下にリアルタイム表示されます。
  3. exp が切れていないか、クレームが正しいかを確認します。

重要な注意

  • デコードのみで署名検証は行いません(検証には秘密鍵が必要で、オンラインツールに入れてはいけません)。
  • ペイロードは誰でも読めます。機密を入れないこと。
  • トークンはパスワード同然です。共有時は注意を。

デコードは中身を読むだけ。署名の検証ではない

ログイン不具合を調べるとき、一番手軽なのは JWT をここに貼り付けて、claims や発行者、そして exp(有効期限)を確認することです。「認証情報は合っているのに何度もログアウトされる」というケースの多くは、実はトークンがとっくに期限切れだった、というオチだったりします。ただ、二つの重要な点を押さえてください。まず、デコードは検証ではありません。ここでは中身を読み出すだけで署名が正しいかは確認しないので、きれいにデコードできてもそのトークンが信頼できるとは限りません。次に、payload は暗号化されていません。ただの Base64 なので、トークンを手にした人なら誰でも読めます。パスワードや鍵などの秘密情報を入れるのは絶対にやめましょう。

鍵なしでなぜ復号できる?

JWT は暗号化されていないからです。仕様書のサンプルトークンを鍵なしでこのページに貼ると、ヘッダーは { "alg": "HS256", "typ": "JWT" }、ペイロードは { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } として返りました。復号されたものはありません。暗号化されたものがないからです。最初の 2 セグメントは Base64url のテキストで、署名が守るのは改変からで閲覧からではありません。だから JWT には URL に入れたくないものを載せてはいけませんし、完全なトークンをバグ報告に貼るのは、期限切れまで使える資格情報を渡すことです。

トークンをデコードすることは、検証することではない

このページがすること
ドットでトークンを分割し、ヘッダーとペイロードを Base64url デコードします
このページがしないこと
署名の検証。発行者の秘密鍵または公開鍵が必要です
送信されるか
されません。トークンはブラウザ内でデコードされ、外に出ません

JWT のペイロードはエンコードであって暗号化ではありません。トークンを持っている人は誰でも、中のすべてのクレームを読めます——途中で傍受した相手も含めてです。だから JWT は「秘密」と呼ぶべきものを置く場所ではありません。さらに、きれいにデコードできるトークンでも偽造され得ます。それが発行者から来たと示せるのは、サーバー側での署名検証だけです。このページはトークンの中身を確認するために使い、信頼するかどうかの判断には使わないでください。

鍵なしでデコードできる

JWT 公式ドキュメントの見本トークンです。

入力
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
出力
header
{
"alg": "HS256",
"typ": "JWT"
}

payload
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}

秘密は一切与えていないのに、両方の部分が読めます。JWT について最も重要な点がこれです。クレームは平文で流れます。署名が証明するのは「改変されていない」ことで、何かを隠すものではありません。

よくある質問

このツールは署名を検証しますか?
いいえ。Base64URL のデコードでヘッダーとペイロードを表示するだけで、署名は検証しません。検証には秘密鍵が必要で、オンラインツールに貼るべきではありません。
貼り付けたトークンは安全ですか?
安全です。デコードはすべてブラウザ内で行われ、トークンはサーバーに送られません。とはいえ本番の有効なトークンは慎重に扱ってください。
JWT は暗号化されていますか?
いいえ。JWT のヘッダーとペイロードは Base64URL でエンコードされているだけで、誰でも読めます。ペイロードに機密情報を入れないでください。

関連記事

JWT とは?JSON Web Token の仕組み(と読み方) →

このツールを埋め込む

このツールをあなたのサイトやブログに無料で設置できます。下のコードをコピーして貼り付けるだけです(当サイトへのリンクを含みます)。