CalcMint

JWT デコード・生成

JSON Web Tokenを貼り付けると、ヘッダーとクレームの中身、有効期限、署名が正しいかを確認できます。トークンはこのページの外に出ません。

JWT デコード・生成

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTc2NzIyNTYwMCwiZXhwIjoxODkzNDU2MDAwfQ.vgHtS5dyaSUxDoPpQPoyaFVrg5I8B0EV9R0_Ah59pxU

ヘッダー

{
  "alg": "HS256",
  "typ": "JWT"
}

ペイロード

{
  "sub": "1234567890",
  "name": "Jane Doe",
  "admin": true,
  "iat": 1767225600,
  "exp": 1893456000
}
アルゴリズム(alg)
HS256
タイプ(typ)
JWT
主体(sub)
1234567890
発行日時(iat)
2026年1月1日木曜日 9:00:00 GMT+9
有効期限(exp)
2030年1月1日火曜日 9:00:00 GMT+9
このツールを自分のサイトに埋め込む

コードをコピーしてページのHTMLに貼り付けてください。無料です。クレジットのリンクは残してください。

JWTのしくみ

JSON Web Token(RFC 7519)は、Base64URLでエンコードした3つの文字列をドットでつないだものです(header.payload.signature)。ヘッダーには署名アルゴリズム、ペイロードにはユーザーIDや権限、有効期限などのクレームが入り、署名は前の2つから計算されます。

HS256の署名は共有シークレットによるHMACで、同じシークレットで署名も検証もします。RS256・PS256・ES256は秘密鍵で署名し公開鍵で検証するため、多くのサービスが「検証はできるが発行はできない」状態でトークンを確認できます。

安全にトークンを扱うには

  • 署名の検証は必ずサーバー側で行い、alg が "none" のトークンは拒否する。
  • 使うアルゴリズムはサーバー側で固定し、トークンのヘッダーに選ばせない。
  • exp・nbf・iss・audを確認する。時計のずれは1〜2分程度の猶予を持たせる。
  • 有効期限は短くし、トークンはパスワードと同じように扱う。このデコーダーはオフラインで動きますが、サーバーに送信するサイトも多くあります。

JWTの登録済みクレーム(RFC 7519)

クレーム名称意味
iss発行者トークンを作成・署名した主体
sub主体トークンの対象。通常はユーザーID
aud対象者トークンを受け取るべき相手
exp有効期限この時刻(1970年からの秒数)以降は拒否する
nbf有効開始この時刻より前は拒否する
iat発行日時作成された時刻
jtiJWT ID使い回しを防ぐための一意のID

よくある質問

JWTの中身は誰でも読める?

読めます。ヘッダーとペイロードはBase64URLでエンコードされているだけで暗号化されていないため、トークンを持っている人なら誰でも読めます。パスワードや秘密情報は絶対にペイロードに入れないでください。

デコードできればJWTは正しい?

いいえ。デコードは中身を読むだけです。改ざんや偽造がないことは、正しいシークレットまたは公開鍵で署名を検証して初めてわかります。サーバー側ではさらにexp・nbf・audも確認が必要です。

発行したばかりなのに期限切れになるのは?

exp・iat・nbfは1970年からの「秒」で、ミリ秒ではありません。JavaScriptのDate.now()(ミリ秒)を1000で割らずに使うと数万年先の日付になり、サーバー間の時計のずれがあると新しいトークンが期限切れや有効前に見えることがあります。

貼り付けた内容はサーバーに送られる?

送られません。このツールはJavaScriptとブラウザ内蔵のWeb Crypto APIだけで、すべて端末の中で動きます。入力・貼り付け・読み込んだ内容がアップロードや保存されることはありません。

関連する計算ツール