tigtools

JWT Decoder

JWTを貼り付けると、ヘッダーとクレーム、有効期限を確認できます。デコードはブラウザー内で行われ、署名の検証は行いません。

ブラウザー内で動作 登録不要

デコードは検証ではありません。誰でも任意の内容を含むトークンを作成できます。このツールは署名を検証しません。処理はブラウザー内でのみ行われますが、本番環境で使用中のトークンをウェブサイトに貼り付けることは避けてください。

使い方

  1. Authorizationヘッダー、Cookie、またはブラウザーの開発者ツールからトークンをコピーします。先頭の「Bearer 」は自動的に削除されます。
  2. 入力欄に貼り付けます。ヘッダーとペイロードが整形されたJSONで表示されます。
  3. ステータス行とクレーム一覧で、発行者、対象者、有効期限を現地時刻で確認します。
  4. 必要に応じて、ヘッダーまたはペイロードのJSONをコピーします。

仕組み

一般的な署名付き形式(JWS)のJSON Web Token(JWT、RFC 7519)は、base64urlでエンコードされた3つの部分をドットで区切ったものです。ヘッダーには、トークンの署名に使用されたアルゴリズム(HS256(HMACとSHA-256)やRS256(RSA)など)が記載されています。ペイロードにはクレーム、つまりユーザーやトークン自体に関する情報が含まれます。署名を使うと、ヘッダーとペイロードが変更されていないことをサーバーで確認できます。

ヘッダーとペイロードは暗号化されておらず、エンコードされているだけです。トークンを持っている人は誰でも内容を読めます。このツールも同じことを行います。JWTのペイロードに秘密情報を含めないでください。

デコードしても、トークンの正当性は証明されません。発行者の鍵がなければ署名が本物かどうかは判断できないため、このツールの結果をトークンの信頼性の判断に使用しないでください。検証は、署名、アルゴリズム、exp、nbf、iss、audを確認する、保守されているJWTライブラリを使ってサーバー上で行ってください。

登録済みクレームについては表で説明しています。exp、nbf、iatはNumericDate値で、1970年1月1日UTCからの秒数を表します。このツールはそれらをお使いのタイムゾーンの日付に変換し、デバイスの時計と比較します。サーバーでよく許容される時計のずれによるわずかな猶予は考慮しません。時計がずれていると、ステータスも正しく表示されません。

5つの部分で構成されたトークンは、暗号化されたJWT(JWE)です。鍵がないとペイロードをデコードできないため、このツールでは形式のみを報告します。

使用例

APIが401を返すのはなぜですか?

アプリが送信するアクセストークンをデコードします。ステータスに「…に有効期限切れ」と表示された場合、クライアントはトークンを更新する必要があります。audがhttps://api.example.comなのにhttps://api2.example.comを呼び出している場合、audienceが一致していません。

OpenID ConnectのIDトークンを確認する

ログインプロバイダーのIDトークンには、iss(プロバイダー)、sub(変更されないユーザーID)、aud(クライアントID)、iat、expのほか、emailやnameなどのプロフィールクレームが含まれます。デコードすると、アプリが実際に受け取るクレームを確認できます。

タイムスタンプクレームを読む

ペイロードに "exp": 1735689600 が含まれている場合、クレームの表には2025年1月1日 00:00:00 UTCとして表示されます。お使いの現地時間に変換した日時とともに、どれだけ前、または先の日時かも表示されます。

よくある質問

このツールでJWTの署名を検証できますか?

いいえ。ヘッダーとペイロードをデコードするだけです。検証には、HS256の場合はシークレット、RS256やES256の場合は発行者の公開鍵が必要です。信頼できるライブラリを使ってサーバー上で行ってください。

ここにトークンを貼り付けても安全ですか?

トークンはブラウザー内でデコードされ、外部には送信されません。それでも、有効なトークンは期限切れになるまでパスワードのように使えるため、期限切れのトークンやテスト用トークンを使用し、信頼できないツールには本番環境のトークンを貼り付けないでください。

ペイロードはなぜ誰でも読めるのですか?

署名付きJWTはbase64urlでエンコードされていますが、暗号化はされていません。署名はトークンの改ざんを防ぐもので、内容を読めなくするものではありません。内容を秘匿する必要がある場合は、暗号化JWT(JWE)を使用するか、データをサーバー上に保管してください。

「exp」とは何ですか?単位は何ですか?

expはNumericDate形式の有効期限です。1970-01-01 00:00:00 UTCからの経過秒数(ミリ秒ではなく整数)で表されます。その時刻以降はトークンを拒否する必要があります。

「有効なbase64urlではありません」と表示されるのはなぜですか?

コピー時に末尾の文字が欠けたり、トークンを囲む引用符が混入したり、URLエンコードされた(ドットの代わりに%2Eが使われている)などの理由で、トークンが途中で切れたり変更された可能性があります。発行時のトークンをそのまま貼り付けてください。

プライバシー

トークンはブラウザー内のJavaScriptでデコードされます。サーバーへの送信、保存、アクセス解析への使用はありません。署名の検証や鍵の検索は行わないため、ネットワークリクエストも発生しません。