使い方
- Authorizationヘッダー、Cookie、またはブラウザーの開発者ツールからトークンをコピーします。先頭の「Bearer 」は自動的に削除されます。
- 入力欄に貼り付けます。ヘッダーとペイロードが整形されたJSONで表示されます。
- ステータス行とクレーム一覧で、発行者、対象者、有効期限を現地時刻で確認します。
- 必要に応じて、ヘッダーまたはペイロードの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でデコードされます。サーバーへの送信、保存、アクセス解析への使用はありません。署名の検証や鍵の検索は行わないため、ネットワークリクエストも発生しません。