JWTデコード

JWTはドットで区切られたヘッダー・ペイロード・署名の3つの部分でできています。このツールはヘッダーとペイロードをデコードし、exp・iat・nbfをUTCと現地時間で表示します。署名の検証は行いません。

このツールはデコードのみ行い、署名は検証しません。ここでデコードできても本物である証明にはなりません。

トークンを貼り付けるとデコードします

問題は解決しましたか?
Googleで優先表示

使い方

  1. トークンを入力欄に貼り付けます。先頭のBearer、引用符、改行は無視されます。
  2. ヘッダーとペイロードを整形済みのJSONで確認します。それぞれ「コピー」でコピーできます。
  3. バッジと時刻クレームを確認します。exp、iat、nbfはUTCとローカル時刻で表示され、今からどれくらい前か先かもわかります。
  4. 手元にトークンがなければ「サンプルを読み込む」で架空のトークンを試せます。

計算方法

JWTはドットで区切られた3つの部分、ヘッダー、ペイロード、署名からなります。ヘッダーとペイロードはJSONをbase64urlでエンコードしたもので、base64の+と/を-と_に置き換え、=のパディングを省いた形式です。ツールはこのエンコードを戻し、バイト列をUTF-8として読んでインデント付きのJSONで表示します。

exp、iat、nbfは1970年1月1日UTCからの秒数です。expは失効時刻、iatは発行時刻、nbfは有効になる最も早い時刻です。バッジは標準のルールに従い、現在時刻がexp以降なら期限切れ、nbfより前ならまだ有効でない、と判定します。現在時刻には端末の時計を使います。

署名はトークン内の文字列をそのまま表示します。このツールは署名を検証しません。デコードはトークンだけでできますが、署名の検証には秘密鍵か公開鍵が必要で、それはサーバー側だけで行うべきことです。

主なクレーム

クレーム意味
iss発行者: トークンを作った主体
subサブジェクト: トークンの対象、多くはユーザーID
audオーディエンス: トークンの受け手
exp有効期限。1970年UTCからの秒数
nbfNot Before: この時刻より前は無効
iat発行日時: トークンが作られた時刻
jtiトークンID: このトークン固有の識別子

よくある質問

署名は検証されますか?

されません。ヘッダーとペイロードをデコードするだけです。JWTは誰でもデコードでき、好きな中身で作ることもできるので、デコードできたからといって信用してはいけません。署名は正しい鍵を使ってサーバーで検証してください。

トークンはどこかに送信されますか?

いいえ。デコードはブラウザ内で行い、何もアップロードしません。それでも本物のトークンはパスワードと同じように扱い、信頼できないツールに本番環境の有効なトークンを貼り付けないでください。

さっきまで使えたのに「期限切れ」と出ます

バッジはexpをこの端末の時計と比べています。端末の時計がずれていたり、サーバーが時刻のずれを少し許容していたりすると、短時間だけ判定が食い違うことがあります。

alg が none とはどういう意味?

署名のない、保護されていないトークンを表します。署名なしトークンを意図的に受け付ける場合を除き、サーバーは拒否しなければなりません。そうした例はまれです。このツールはnoneを見つけると警告を出します。

ペイロードは暗号化されていますか?

いいえ。通常の署名付きJWTはエンコードされているだけなので、持っている人なら誰でもペイロードを読めます。秘密情報は入れないでください。暗号化されたトークン(JWE)は5つの部分からなり、このツールでは読めません。