JWTデコーダーとは?

JSON Web Tokenを貼り付けるだけで、ヘッダー、ペイロード、署名をデコードして表示します。トークンのクレーム確認、有効期限の検証、認証の問題のデバッグがすぐにできます。

デコーダはトークンをドットで分割し、ヘッダーとペイロードを Base64URL でデコードしてから JSON として解析します。署名アルゴリズム(HS256、RS256、EdDSA など)、予約クレーム(iss、sub、aud、exp、iat、nbf、jti)、サービス側のカスタムクレームが一覧で表示されます。時刻系クレームは Unix エポックからローカルタイムゾーンに変換されるので、トークンが期限切れかどうかひと目で分かります。

使い方

  1. 入力欄にJWTトークンを貼り付けてください。Base64エンコードされた3つのセクションが自動的に検出されます。
  2. デコードされたヘッダー(アルゴリズム、タイプ)とペイロード(クレーム、有効期限、発行者)を並べて確認できます。
  3. デコードされた各セクションまたは完全な解析結果をコピーできます。

使用するタイミング

  • 401 エラーの原因調査で、ベアラートークンの exp が過ぎていないか確かめたいとき。
  • 本番リリース前に、ステージングで発行されたトークンの aud と iss が想定どおりか確認したいとき。
  • 外部 SSO がアクセストークンに埋め込んだ user_id やスコープを確認したいとき。

結果

APIで401エラーが発生した場合、リクエストヘッダーのBearerトークンを貼り付けて、'exp'クレームが期限切れでないか、'aud'クレームが期待する値と一致するかを確認できます。

よくある質問

このツールは署名を検証しますか?
HMAC トークン(HS256・HS384・HS512)なら、シークレットを貼り付けると、ツールがあなたの端末上で署名をチェックします。RS・ES トークン(RS256/384/512・ES256/384/512)は、発行者の PEM 公開鍵を貼り付ければ同じように検証できます。どちらの場合もシークレットや鍵が端末から出ることはありません。
本番のトークンを貼っても安全ですか?
デコードは端末内で完結し、トークンがサーバーへ送られることはありません。ただしベアラートークンは持っているだけで本人になりすませる性質を持つので、画面を覗かれることのほうがツール自体より大きなリスクです。
alg が「none」のときは何を意味しますか?
古い実装では alg=none の無署名トークンを受け入れる事例があり、これはよく知られた脆弱性です。本番 API は即座に拒否すべきです。認証用のトークンで「none」を見かけたら、発行側の設定を確認する必要があります。
exp や iat が日付ではなく数字で表示されるのはなぜですか?
JWT は時刻クレームを 1970-01-01 UTC からの秒数として保存します。デコーダは各クレームの横にローカルタイムの人間向け日時を併記するので、計算しなくても期限切れかどうか判断できます。
暗号化されたトークン(JWE)もデコードできますか?
JWE はドット区切りで 5 セグメントあり、内容自体が暗号化されています(JWS は署名のみ)。本ツールが扱うのは JWS(header.payload.signature の 3 セグメント)です。JWE を読むには復号鍵が必要で、その鍵は設計上、受信側のサーバーに留めるべきものです。

関連ツール