JWTデコードで確認できること
JWTのPayloadは暗号化されていないことが多く、Base64URLデコードで中身を確認できます。ユーザーID、権限、issuer、audience、有効期限などを見て、アプリ側の期待値と一致しているか確認できます。
JWT(JSON Web Token)をHeader / Payload / Signatureに分解して可視化し、HMAC / RSA / ECDSA / RSA-PSS で署名検証もできます。 すべてブラウザ内(SubtleCrypto)で処理され、トークン・キーはサーバーに送信されません。
💡 JWTについて
Header.Payload.Signature の3パート構成で、各パートはBase64URLでエンコードされています。alg: none のJWTは署名なしで受け入れる脆弱性の温床になるため、検証側で必ず拒否すべきです。本ツールも未対応です。JWT Decoder は、JWTを Header、Payload、Signature に分解し、exp や iat などのクレームを読みやすく表示するツールです。ログイン不具合、認可エラー、トークン期限切れの調査に役立ちます。
JWTや検証キーはブラウザ内で処理され、サーバーへ送信されません。実トークンを扱う場合でもローカルで確認できます。
JWTのPayloadは暗号化されていないことが多く、Base64URLデコードで中身を確認できます。ユーザーID、権限、issuer、audience、有効期限などを見て、アプリ側の期待値と一致しているか確認できます。
署名はトークンの改ざん検知に使われます。HS256では共有シークレット、RS256やES256では公開鍵を使って検証します。Payloadを読めることと、署名が正しいことは別の問題です。
JWTはヘッダー・ペイロード・署名を1つにまとめられて便利な反面、セッションIDのような短い値に比べて通信量が増えやすい点や、一度発行すると簡単には無効化できない点は、このツールを作りながら改めて実感しました。「ステートレスだから便利」の裏にある制約です。Decoderを作る前はJWTを単純に「安全な認証トークン」くらいに考えていましたが、実際にはどう発行し、どこに保存し、どう失効させるかまで含めて考えるものだと理解が変わりました。この記事の実例(正規署名済みトークンと、algをnoneに書き換えた偽造トークン)は実際にこのDecoderへ貼り付けて動作検証したもので、後者を試すと「未対応・検証不可」と表示されます。
作業の流れに近いツールへすぐ移動できます。