header.payload.signature
JWTデコーダー
JSON Web Token(JWT)は、ドットで区切られた3つのBase64url部分、ヘッダー、ペイロード、署名でできています。トークンを貼り付けるとクレームと時刻が読めます。ここではデコードするだけで、検証はしません。
- iat 1700000000 = 2023-11-14 22:13:20 UTC
- exp 1700003600 = 2023-11-14 23:13:20 UTC
- HS256 = 32 B
トークンはこのタブ内にとどまり、どこにも送信されません。デコードできたトークンが信頼できるトークンとは限りません。ここで署名が確認されることはありません。
Scanned by NortonTM Safe Web
概要
- 価格
- 料金なし
- アカウント
- 不要
- 規格
- RFC 7519 (JWT)、RFC 7515 (JWS)、RFC 7516 (JWE)
- 署名
- 検証しません — トークンのデコードのみ
- 時刻
- exp、nbf、iatをUTCで表示し、端末の時計と比較
- アップロード
- なし — トークンはブラウザーのタブ内にとどまります
サンプルトークンと主なアルゴリズム
このページのサンプルトークンは、使い捨ての鍵を使ってHMAC-SHA-256で署名されています。最初の表は、ページがこれをデコードして作成したものです。
| クレーム | 値 | 時刻 (UTC) |
|---|---|---|
| iss | auth.example.com | — |
| sub | user-42 | — |
| aud | api | — |
| iat | 1700000000 | 2023-11-14 22:13:20 UTC |
| exp | 1700003600 | 2023-11-14 23:13:20 UTC |
| alg | 方式 | ハッシュ | 署名サイズ |
|---|---|---|---|
| HS256 | HMAC | SHA-256 | 32 B |
| HS512 | HMAC | SHA-512 | 64 B |
| RS256 | RSASSA-PKCS1-v1_5 | SHA-256 | 256 B (2048-bit key) |
| ES256 | ECDSA P-256 | SHA-256 | 64 B |
| ES512 | ECDSA P-521 | SHA-512 | 132 B |
| EdDSA | EdDSA | — | 64 B (Ed25519) |
JWTをデコードする手順
トークンを貼り付ける
先頭のBearerの有無にかかわらず、トークン全体を貼り付けます。ドットで区切られた3つの部分があり、暗号化されたJWEの場合は5つです。
各部分を読む
ヘッダーとペイロードは整形されたJSONで表示され、各クレームは表に一覧されます。時刻のexp、nbf、iatはUTCで表示されます。
時刻を確認する
ページはexpとnbfをお使いの端末の時計と比べ、トークンの期限が切れているかどうかを示します。トークンが本物かどうかは示しません。
JWTの構造
JWT(RFC 7519)は、header.payload.signatureの形で書かれます。ヘッダーとペイロードはJSONオブジェクトで、それぞれパディングなしのBase64urlでエンコードされています(RFC 4648、5節)。署名は同じエンコードで表した生のバイト列です。デコードで変わるのはエンコードだけなので、トークンを持っていれば誰でもペイロードを読めます。秘密情報は入れないでください。ヘッダーのalgに署名アルゴリズムが書かれます。たとえばHS256(HMACとSHA-256、署名は32バイト)やRS256(RSAとSHA-256、2048ビット鍵で256バイト)です。
このページはトークンをデコードするだけで、それ以上のことはしません。署名の確認には鍵が必要なので署名は検証せず、トークンが本物か、失効しているか、サーバーに受け入れられるかも分かりません。1970-01-01 UTCからの秒数であるexp、nbf、iatのクレームを端末の時計と比べ、UTCの日時として表示します。5つの部分があるトークンはJWEで、内容が暗号化されているため、表示できるのはヘッダーだけです。
JWTの質問
JWTをデコードするには?
トークンをボックスに貼り付けます。ページはドットで分割し、最初の2つの部分をBase64urlから変換してJSONとして表示します。先頭のBearerは無視されます。サンプルのトークンでは、ヘッダーは{"alg":"HS256","typ":"JWT"}です。
このページは署名を検証しますか?
いいえ。検証には秘密鍵または公開鍵が必要ですが、このページが鍵を求めることはありません。ここでデコードできるトークンでも、偽造、改ざん、失効されている可能性があります。署名の検証は、自分のサーバーのコードで、メンテナンスされているJWTライブラリを使って行ってください。
exp、iat、nbfは何を意味しますか?
1970-01-01 UTCからの秒数で表した時刻です(RFC 7519)。expはトークンの有効期限、nbfはそれより前には受け入れてはならない時刻、iatは発行された時刻です。サンプルのトークンでは、iatの1700000000は2023-11-14 22:13:20 UTC、expの1700003600はその1時間後です。
実際のトークンをここに貼り付けても安全ですか?
トークンはブラウザーのタブ内にとどまり、どこにも送信されません。ただし、有効なトークンは認証情報です。持っている人は、期限が切れるまで誰でも使えます。自分が所有するトークンを貼り付け、可能なら期限切れやテスト用のトークンを使ってください。
トークンに5つの部分があるのはなぜですか?
5つの部分があるトークンはJWEで、暗号化されたJSON Web Tokenです(RFC 7516)。ペイロードは受信者向けに暗号化されているため、このページに表示されるのはヘッダーと各部分のサイズだけです。内容はここでは読めません。
「not Base64url」や「not JSON」とはどういう意味ですか?
最初の2つの部分はそれぞれ、JSONオブジェクトにデコードできるBase64urlのテキストである必要があります。ページは失敗した部分とその理由を示します。文字セット外の文字、UTF-8でないバイト列、または特定の行と列にエラーのあるJSONなどです。トークンが途中で切れていたり、余分な文字が付いていたりするのが、よくある原因です。