JWTデコーダーとは?
JSON Web Tokenを貼り付けるだけで、ヘッダー、ペイロード、署名をデコードして表示します。トークンのクレーム確認、有効期限の検証、認証の問題のデバッグがすぐにできます。
デコーダはトークンをドットで分割し、ヘッダーとペイロードを Base64URL でデコードしてから JSON として解析します。署名アルゴリズム(HS256、RS256、EdDSA など)、予約クレーム(iss、sub、aud、exp、iat、nbf、jti)、サービス側のカスタムクレームが一覧で表示されます。時刻系クレームは Unix エポックからローカルタイムゾーンに変換されるので、トークンが期限切れかどうかひと目で分かります。
使い方
- 入力欄にJWTトークンを貼り付けてください。Base64エンコードされた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 を読むには復号鍵が必要で、その鍵は設計上、受信側のサーバーに留めるべきものです。