使い方
入力欄にJWT文字列を貼り付けると、headerとpayloadがそれぞれ整形されたJSONとして表示されます。署名アルゴリズム、登録済みクレーム(exp・iat・nbf)の実際の日時、そして有効期限が切れているかどうかも合わせて確認できます。headerやpayloadの結果はコピーボタンでそのまま取得できます。入力した内容はどこにも送信されず、このブラウザの中だけで処理されます。
JWTの3つの部分
JWTはドット(.)で区切られた3つの部分(header.payload.signature)で構成されています。headerには署名アルゴリズム(alg)やトークンの種類(typ)などのメタデータが、payloadにはユーザーIDや権限、有効期限といった実際のクレームが入っています。この2つの部分は暗号化ではなく単にBase64URLでエンコードされたJSONにすぎないため、誰でもデコードして内容を読むことができます。最後のsignature部分だけが秘密鍵(または秘密鍵のペアとなる鍵)で署名されており、headerとpayloadが発行後に改ざんされていないことを確認するために使われます。
デコードと検証は別物です
このツールはheaderとpayloadを読み取って表示するだけで、signature部分は検証しません。署名を検証するには、そのトークンを発行したサーバーが持つ秘密鍵(HMAC系アルゴリズムの場合)または公開鍵(RSA・ECDSA系アルゴリズムの場合)が必要ですが、このツールはそうした鍵を受け取ることも、ブラウザの外と通信することもありません。そのため、画面に内容が正しく表示されたからといって、そのトークンが本物である、あるいはまだ有効であるとは限りません。本番環境で使うトークンや信頼できない秘密鍵は、このツールを含めどんなオンラインツールにも貼り付けないようにしてください。
登録済みクレーム(exp、iat、nbf)
JWTの標準(RFC 7519)では、exp(有効期限)、iat(発行時刻)、nbf(有効開始時刻)といったいくつかのクレーム名があらかじめ決められています。これらの値はすべて1970年1月1日から経過した秒数を表す数値(NumericDate)です。このツールはこの値を利用者のロケールに合わせた日時に変換して表示し、現在時刻と比較してexpが過ぎていれば「期限切れ」、nbfがまだ過ぎていなければ「まだ有効ではありません」と表示します。ただしこの判定はあくまで画面表示用の参考情報であり、実際のアクセス制御は必ずサーバー側の検証を経る必要があります。
プライバシー
貼り付けたトークンとそのデコード結果は、このブラウザの中だけで計算され、サーバーには送信されません。ただし、JWTのpayloadはもともと暗号化されていないため、このツールを使わなくてもメールアドレスや権限、内部IDなどの情報は誰でも読み取れる点を覚えておいてください。