JWTの仕組みとデコードについて
JWT(JSON Web Token)は、ドット(.)で区切られた3つの部分(ヘッダー、ペイロード、署名)で構成されています。本ツールは、このうちBase64urlエンコードされているヘッダーとペイロードをUTF-8のJSONオブジェクトに変換(デコード)し、人間が読める形式で表示します。
トークンの中身をサッと確認できるため、認証エラーの原因調査や認可周りのデバッグを行う際に非常に便利なツールです。
標準クレームの解析とタイムスタンプ変換
デコードされたペイロードには、トークンの属性情報である「クレーム」が含まれます。例えば、exp(有効期限)、iat(発行日時)、sub(主題)、iss(発行者)、aud(対象者)などの標準的なクレームです。
さらに本ツールでは、expやiatのようなUnixタイムスタンプの数値を、自動的に直感的な日時のフォーマットに変換して表示します。これにより、有効期限切れの確認などを手動で計算する手間が省けます。
クライアントサイド処理による安全性と制限事項
ToolMoleのJWTデコード処理は、すべてユーザーのブラウザ上でローカルに実行されます。入力されたトークンが外部のサーバーに送信されたり保存されたりすることは一切ないため、機密情報を含む可能性のある実環境のJWTでも安全に解析できます。
ただし、本ツールは署名の検証(シグネチャの妥当性確認)や暗号化されたJWT(JWE)の復号には対応していません。秘密鍵の入力機能はなく、あくまで「エンコードされた中身を可視化する」ためのツールである点にご留意ください。
よくある質問
JWTを持っていれば、誰でもその中身を読めるのですか?
はい、暗号化されていない一般的なJWT(JWS)であれば、Base64urlでエンコードされているだけなので誰でもデコードして中身を読むことができます。そのため、ペイロードにはパスワードなどの機密情報を絶対に含めないように設計する必要があります。
このツールを使う際、私のJWTはサーバーに送信されますか?
いいえ、送信されません。すべてのデコード処理はJavaScriptを用いてブラウザ上でローカルに行われます。外部サーバーとの通信やデータの保存は一切発生しないため、安全にご利用いただけます。
このツールでJWTの署名(シグネチャ)が正しいかどうか確認できますか?
本ツールは署名の検証には対応していません。秘密鍵を用いた暗号学的な検証機能は提供しておらず、あくまでエンコードされた文字列をJSON形式に変換して表示する機能のみを持っています。
トークンの有効期限内なのに、サービス側でJWTが拒否されるのはなぜですか?
有効期限(<code>exp</code>)以外にも、発行者(<code>iss</code>)や対象者(<code>aud</code>)がサービス側の期待する値と一致していない可能性があります。また、ツールでは検知できない「署名の不一致」や「サーバー側での意図的な無効化(ブラックリスト入り)」が発生しているケースも考えられます。
暗号化されたJWT(JWE)も解析できますか?
いいえ、本ツールはエンコードされたJWTのデコードのみをサポートしています。暗号化されたJWT(JWE)を復号するには専用の秘密鍵が必要となるため、このツールでは中身を確認できません。
ツールの不具合や改善案はありますか。 フィードバックを送る