コンテンツへスキップ

header.payload.signature

JWTデコーダー

JSON Web Token(JWT)は、ドットで区切られた3つのBase64url部分、ヘッダー、ペイロード、署名でできています。トークンを貼り付けるとクレームと時刻が読めます。ここではデコードするだけで、検証はしません。

トークンはこのタブ内にとどまり、どこにも送信されません。デコードできたトークンが信頼できるトークンとは限りません。ここで署名が確認されることはありません。

Scanned by NortonTM Safe Web

概要

価格
料金なし
アカウント
不要
規格
RFC 7519 (JWT)、RFC 7515 (JWS)、RFC 7516 (JWE)
署名
検証しません — トークンのデコードのみ
時刻
exp、nbf、iatをUTCで表示し、端末の時計と比較
アップロード
なし — トークンはブラウザーのタブ内にとどまります

サンプルトークンと主なアルゴリズム

このページのサンプルトークンは、使い捨ての鍵を使ってHMAC-SHA-256で署名されています。最初の表は、ページがこれをデコードして作成したものです。

サンプルトークンのクレーム
クレーム値時刻 (UTC)
issauth.example.com—
subuser-42—
audapi—
iat17000000002023-11-14 22:13:20 UTC
exp17000036002023-11-14 23:13:20 UTC
主な署名アルゴリズム (alg)
alg方式ハッシュ署名サイズ
HS256HMACSHA-25632 B
HS512HMACSHA-51264 B
RS256RSASSA-PKCS1-v1_5SHA-256256 B (2048-bit key)
ES256ECDSA P-256SHA-25664 B
ES512ECDSA P-521SHA-512132 B
EdDSAEdDSA—64 B (Ed25519)

JWTをデコードする手順

1

トークンを貼り付ける

先頭のBearerの有無にかかわらず、トークン全体を貼り付けます。ドットで区切られた3つの部分があり、暗号化されたJWEの場合は5つです。

2

各部分を読む

ヘッダーとペイロードは整形されたJSONで表示され、各クレームは表に一覧されます。時刻のexp、nbf、iatはUTCで表示されます。

3

時刻を確認する

ページは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などです。トークンが途中で切れていたり、余分な文字が付いていたりするのが、よくある原因です。