JWT デコーダー&検証ツール
JSON Web Token を貼り付け、サーバーがすべきように読みましょう。ヘッダーとペイロードは読みやすい JSON にデコードされ、時間クレームはタイムラインとして描かれます(発行、有効開始、失効、失効済み)。そして HS256、HS384、HS512 については、あなたが提供するシークレットに対する本物の署名検証を行います。すべてブラウザの中で起こります。トークンは認証情報であり、このサイトでは認証情報を、記録の残る AI チャットや見知らぬサーバーに貼ることはありません。
トークンとは何か、デコードで何が証明されるか
JWT はドットで結ばれた 3 つの Base64URL セグメントです。署名アルゴリズムを名乗るヘッダー、クレームのペイロード、そして最初の 2 つに対する署名です。中央のセグメント、つまり誰もが読みたがる部分は、暗号化ではなくエンコーディングです。Base64 デコーダーはキーなしでそれを開きます。だからこそ、トークンにはポスターに印刷できないようなものを決して載せてはいけません。署名が加えるのは出所の証明です。クレームを 1 つ編集すれば HMAC は一致しなくなります。検証側が実際に検証すればの話ですが。インシデントレポートを埋める失敗とは、検証せずにデコードして信頼したサーバー、トークン自身にアルゴリズムを選ばせたライブラリ、福音のように受け入れられた「none」トークンです。このページは正直なワークフローを映します。すべてをデコードして読み、時計と照らしてクレームのタイムラインを読み(過去の exp は、署名がどれほど有効でも死んだトークンです)、アルゴリズムの警告に留意し、それから初めて検証します。ローカルで、シークレットはトークンと同じブラウザタブの中に留まります。デバッグに使うシークレットが設定ファイル由来なら、.env バリデーターもそのファイルを送信せずにチェックします。特集記事 チャットボットに秘密を扱わせてはいけない では、この一族の仕事がすべてブラウザに移った理由を説明しています。
よくある質問
本番トークンをここに貼っても安全ですか?
ネット上でこれを行う最も安全な場所であり、このツールが存在する理由です。デコードはこのページのコードで、あなたのブラウザの中で行われます。トークンが送信、保存、記録されることはありません。人々が実際に使う代替手段と比べてみてください。会話を第三者のサーバーに保持する AI チャットや、貼ったものをサーバーがすべて見てしまう「オンライン JWT デコーダー」です。トークンは失効するまで生きた認証情報です。貼った場所からは、再生される可能性があります。ここではどこにも行きません。.env バリデーターと同じローカル限定のルールです。
誰でも JWT をデコードできるなら、それはセキュリティホールではないのですか?
デコードは決して防御ではなかったからです。JWT は暗号化された陳述ではなく、署名された陳述です。ペイロードは Base64URL、つまりエンコーディングであり、トークンを持つ誰もが読めます。安全性は署名に宿ります。署名は、陳述がキーの保持者によって発行され、改変されていないことを証明します。古典的な災害は、開発者がペイロードを秘密として扱うこと、あるいはサーバーが署名を検証せず、手で編集されたペイロードが素通りすることです。記事 Base64 は暗号化ではない が、両者の根底にあるエンコーディングの混同を扱っています。
ここで HS256 は検証できるのに、RS256 トークンはできないのはなぜですか?
HS256 は対称だからです。1 つの共有シークレットが署名も検証も行うため、入力したシークレットを HMAC でローカルに確認できます。RS256 は非対称です。秘密キーで署名され、対応する公開キーで検証されます。このページがそれを求めれば、キーの貼り付けを誘うページとなり、漏れた秘密キーで終わる習慣を教えてしまいます。RS256 トークンは、発行者の公開 JWKS を使って自分のコードやツールで検証し、秘密キーはこのページを含め、どのウェブサイトやチャットにも決して貼らないでください。
「alg: none」とは何ですか?なぜ赤い警告なのですか?
トークンが署名されていないことを宣言しているという意味です。そしてその宣言を尊重するサーバーは、誰からのどんなペイロードでも、キーなしで受け入れます。これは現実に繰り返された脆弱性のクラスでした。トークン自身の alg フィールドを信頼したライブラリは、管理者ペイロードを持つ「none」トークンを手渡され得たのです。警告が大げさなのは、正しい反応が大げさであるべきだからです。none トークンは未認証のデータであり、それを受け入れるシステムは設計上、認証バイパスを抱えています。
署名が一致しました。もう終わりですか?
トークンがシークレットの保持者によって発行され、内容が改変されていないことは証明しました。それがあなた宛てであること(aud クレームを確認)、現行であること(上のタイムラインが exp と nbf を示します)、シークレット自体が強いこと、は証明していません。「secret」のような推測可能なシークレットの HS256 はオフラインの総当たりで倒れ、その後は誰でもあなたの検証が祝福するトークンを発行できます。検証は監査の 1 行であり、監査全体ではありません。