JWTデコーダー
JSON Web Tokenのヘッダーとペイロードをデコードし、exp、iat、nbfを日時で表示します。デコードは検証ではありません。署名のチェックは行いません。
ブラウザー内でローカルに処理されます。テキストはアップロードされません。
このツールでできること
JSON Web Tokenを貼り付けると、中身を読めます。トークンをヘッダー、ペイロード、署名に分割し、Base64urlの各パートをUTF-8としてデコードして、JSONを構文ハイライト付きで見やすく整形します。登録済みの時刻クレームである exp(有効期限)、nbf(有効開始日時)、iat(発行日時)は、読みやすい日時で表示され、お使いのデバイスの時計を基準にした「期限切れ」「まだ有効ではない」「現在有効」の表示も付きます。
重要:デコードは検証ではありません。JWTのヘッダーとペイロードはエンコードされているだけで暗号化されておらず、誰でも好きな内容のトークンを作成できます。このツールは、署名、発行者、オーディエンス、その他のクレームを一切チェックしないため、ここでデコードできたトークンでも、偽造、改ざん、失効している可能性があります。デコードできたというだけでトークンを信頼してはいけません。検証は、正しい鍵を使って、サーバー側で行う必要があります。
トークンは認証情報です。デコードはすべてブラウザー内で行われ、トークンがどこかに送信されることはありませんが、管理していないデバイスで本番環境の有効なトークンを貼り付けることは避けてください。また、トークンが alg「none」を名乗っている場合や署名がない場合は、安全でない、または偽造されたトークンの典型的な兆候であるため、警告が表示されます。
使い方
- 1トークン全体(ドットで区切られた3つの部分)を貼り付けます。先頭の「Bearer 」は自動的に取り除かれます。
- 2デコードされたヘッダーとペイロード、および exp、nbf、iat の日時を確認します。
- 3alg「none」や署名の欠落などの警告がないか確認します。
- 4必要に応じて、デコードされたJSONをコピーします。署名の検証は、ここではなく、ご自身のバックエンドで行ってください。
対応形式
JSONのヘッダーとペイロードを持つ、コンパクト形式のJWSトークン(header.payload.signature)。暗号化されたトークン(5つの部分からなるJWE)はデコードできません。
プライバシー
このツールはブラウザー上で動作します。入力されたデータはお使いのデバイス上で処理され、当社のサーバーには送信されません。
制限事項
- 署名は検証されません。トークンが本物かどうか、サーバー上で現在も有効か、失効していないか、お使いのアプリケーション向けのものかどうかは、このツールでは判断できません。
- 有効期限と有効開始のステータスはお使いのデバイスの時計から計算しており、時計がずれている可能性があります。また、サーバーは通常、ある程度の時計のずれを許容します。
- 暗号化されたJWT(JWE)は5つの部分からなり、ペイロードを読めないため、ここでは不正な形式として報告されます。
- 時刻クレームは、1970年からの秒数である必要があります。それ以外の値は、無効として表示されます。
- そのほかのクレーム(iss、aud、sub、scope など)は表示されますが、解釈や検証は行われません。
よくある質問
デコードできたということは、そのトークンは有効なのですか?
いいえ。デコードは検証ではありません。ペイロードにどんな内容でも書いたトークンを、誰でも作成できます。トークンが信頼できるものになるのは、正しいシークレットまたは公開鍵で署名を確認し、さらに発行者、オーディエンス、有効期限などのクレームを検証した場合だけです。
トークンはサーバーに送信されますか?
いいえ。ブラウザー内でデコードされ、送信されることはありません。それでも、トークンはパスワードと同様に扱い、可能であれば期限切れのトークンやテスト用のトークンを使ってください。
alg「none」とはどういう意味ですか?
署名のないトークンであることを宣言しています。サーバーは、明示的に想定している場合を除き、これを拒否する必要があります。受け入れてしまうと、攻撃者が任意のペイロードを偽造できます。該当するトークンを見つけると、このツールは警告を表示します。
サーバーでは受け付けられるのに、期限切れと表示されるのはなぜですか?
お使いのデバイスの時計がサーバーの時計とずれているか、サーバーがある程度の猶予を許容している可能性があります。ここに表示されるステータスは、ローカルの時刻に基づく目安であり、正式な判定ではありません。