JWT作成・確認ツール

ヘッダーとペイロードをJSONで編集し、時刻はボタン1つで設定して、秘密の鍵でトークンに署名します。下にトークンを貼り付けると、同じ鍵で署名を確認します。

無料 ブラウザで動作 2026年11月10日火曜日確認済み

このツールはブラウザ内で動作します。入力した内容が当社に送信されることはありません。

使い方

  1. ヘッダー(JSON)とペイロード(JSON)を書きます。iatを現在時刻に設定、nbfを現在時刻に設定、expを今からの期間で設定を使うと、時刻を入力できます。
  2. アルゴリズムを選び、秘密の鍵を入力します。鍵がBase64で書かれている場合は、鍵の形式でBase64を選んでください。
  3. トークンをコピーします。ヘッダー、ペイロード、署名の、ドットで区切られた3つの部分からなります。
  4. 確認するトークンにトークンを貼り付けると、その署名が上の鍵と一致するかを確認できます。

JWTの署名の仕組み

JSON Web Token(RFC 7519)は、ヘッダーとペイロードからなり、それぞれJSONとして書かれ、Base64url(RFC 7515)で符号化され、ドットでつながれます。署名は、その2つの部分に対する、秘密の鍵によるHMACです(RFC 7518のセクション3.2)。ヘッダーはalgフィールドにアルゴリズムを書き、このページはそのフィールドを選んだアルゴリズムに設定します。

ページは、各JSONのオブジェクトを符号化する前にコンパクトな形で書くため、署名されるバイト列は、入力した内容の空白や改行を除いたコンパクトな形です。トークンを確認する相手は受け取ったバイト列で作業するため、どちらの形でもトークンは有効です。

署名入力 = BASE64URL(ヘッダー) . BASE64URL(ペイロード)
署名       = HMAC-SHA-256(鍵, 署名入力)
             (HS384とHS512は、HMAC-SHA-384とHMAC-SHA-512を使います)
トークン   = 署名入力 . BASE64URL(署名)

ペイロードの時刻

クレームのiat(発行時刻)、nbf(有効開始時刻)、exp(有効期限)は、NumericDateです。1970年1月1日00:00 UTCからの秒数です(RFC 7519のセクション2と4.1)。トークンは、exp以降と、nbfより前には受け付けられません。ボタンはお使いの端末の時計から時刻を書くため、時計が誤っていると時刻も誤ります。

確認でできること、できないこと

確認は、貼り付けられたヘッダーとペイロードから、HMACを正確に再計算し、署名と比べます。alg noneや、HS256、HS384、HS512以外のアルゴリズムは拒否するため、トークンが弱い確認を選ぶことはできません。

クレームの意味は確認しません。例えば、issが期待する発行者かどうか、audがあなたのサービスを指すかどうかは確認しません。それらは、RFC 8725が推奨するとおり、アプリケーションが確認しなければなりません。

計算例:HS256、秘密の鍵your-256-bit-secret

ヘッダー{"alg": "HS256", "typ": "JWT"}、ペイロード{"sub": "1234567890", "name": "Ada Lovelace", "iat": 1516239022}、UTF-8の鍵your-256-bit-secretを使うと、このページは次のトークンを作ります:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSBMb3ZlbGFjZSIsImlhdCI6MTUxNjIzOTAyMn0.nmm0qepYRjhNji3O-jq8Pvcr7l_me1_bomw4EJucQCU

同じ鍵で確認すると、署名は有効と示されます。このトークンにはexpもnbfもないため、どの時刻でも無効にはなりません。ほかの鍵で確認すると、署名が一致しないと示されます。

よくある質問

秘密の鍵はサーバーに送られますか?

いいえ。トークンはお使いのブラウザ自身のSubtleCryptoを使って、ブラウザの中で署名されます。鍵はページが開いている間だけ保持され、送信も保存も記録もされません。

このページは署名が一致すると示すのに、ライブラリがトークンを拒否するのはなぜですか?

ライブラリは、expやnbfの時刻、対象者や発行者を確認しているかもしれません。または、鍵を別の形式で読んでいるかもしれません。ライブラリと同じ方法で、鍵を文字列のUTF-8またはBase64として読み、正しい時計で時刻を比べてください。

alg noneが拒否されるのはなぜですか?

alg noneのトークンには署名がないため、誰でも作れてしまいます。サービスはそれを拒否しなければなりません。このページは確認のときにそれを拒否し、署名のときは常にHMACのアルゴリズムを書きます。

鍵の長さはどのくらいにすべきですか?

ハッシュの出力と同じ長さ以上にしてください。HS256は32バイト、HS384は48バイト、HS512は64バイトです(RFC 7518のセクション3.2)。鍵が短い場合は、ページが警告します。

このページでRS256やES256のトークンを作れますか?

いいえ。このページが署名と確認に使うのは共有の鍵だけで、HS256、HS384、HS512です。秘密のRSAやECDSAの鍵で署名したトークンには、その鍵が必要ですが、このページは受け付けません。

鍵をBase64で入力するのはいつですか?

鍵がBase64で書かれている場合だけです。例えば、JSON Web Keyのk値です。それ以外の場合は、入力したとおりに、空白を含めてUTF-8の文字列として読まれます。

出典

数値と文章の最終確認日:2026年11月10日火曜日。

当サイトの運営に必要なCookieを使用します。お客様の同意があれば、Googleは広告用Cookieを使い、パーソナライズ広告を表示します。拒否された場合も広告は表示されますが、パーソナライズはされません。