JWT デコーダー / 検証ツール

JWT のヘッダーとペイロードをデコードし、署名を検証して、有効期限を確認できます。

トークン

JSON Web Token とは何か

JSON Web Token (JWT) は、一連のクレーム — 「これはユーザー 42 だ」「このトークンは正午に失効する」といった主張 — を、検証できる形でコンパクトに自己完結して運ぶ方法です。JWT は現代の認証のいたるところにあります: ログインすると、サーバーはしばしば署名済みの JWT をブラウザに渡し、以降のすべてのリクエストがそれを含めることで、サーバーは何も照会せずに相手が誰かを信頼できます。トークンが自分自身のクレームと署名を運ぶため、「ステートレス」と呼ばれます。

JWT はドットで結ばれた 3 つの Base64URL 符号化された部分です: header.payload.signature。このツールはそれらの部分を分割してデコードし、クレームを読みやすい形で示し、署名鍵を入力すれば署名が本物かどうかを検証します。

三つの部分

  • ヘッダー: トークンがどう署名されているかを記述します。最も重要なのはアルゴリズム ("alg"、例えば HS256 や RS256) とトークンの種類です。
  • ペイロード: クレームそのものです — sub (主体/ユーザー)、exp (失効)、iat (発行時刻) といった欄と、発行者が加えた任意のカスタムデータを持つ JSON オブジェクトです。
  • 署名: シークレットまたは秘密鍵を使い、ヘッダーとペイロードにわたって計算された暗号的な値です。JWT を信頼できるものにするのはこれです: ペイロードを 1 文字変えれば、署名はもう一致しません。

重要なのは、ヘッダーとペイロードは符号化されているだけで、暗号化されていない点です。トークンを持つ者は誰でもそれらを読めます。署名は内容を隠すのではなく、改ざんされていないことを証明します。パスワードやシークレットを JWT のペイロードに入れてはいけません。

署名の検証

JWT をデコードすると何を主張しているかが分かり、検証するとその主張を信じてよいかが分かります。検証は、鍵を使ってヘッダーとペイロードから署名を計算し直し、一致するかを確認します。アルゴリズムには 2 つの系統があり、それぞれ別の種類の鍵を使います:

  • HMAC (HS256、HS384、HS512): 対称方式です。同じ共有シークレットが署名と検証の両方を行います。検証するにはそのシークレットを入力してください。
  • RSA と ECDSA (RS256、PS256、ES256 など): 非対称方式です。秘密鍵が署名し、公開鍵が検証します。検証するには PEM 形式の公開鍵を入力してください — トークンを確認するだけなら秘密鍵は一切不要です。

このツールはヘッダーからアルゴリズムを自動で判別し、Web Crypto API を使って完全にブラウザ内で検証するため、トークンも鍵もアップロードされることはありません。

標準クレームの読み方

いくつかのクレーム名は標準化されています (「登録済みクレーム」と呼ばれます)。このツールはそれらにラベルを付け、時刻に基づくものを生の Unix タイムスタンプからお使いのローカル時刻に変換し、平易な状態表示を添えるので、トークンが有効か・期限切れか・まだ有効でないかがひと目で分かります:

  • exp — 失効時刻: この時点を過ぎたらトークンは拒否されるべきです。
  • nbf — 有効開始: この時点までトークンは無効です。
  • iat — 発行時刻: トークンが作られた時刻です。
  • iss — 発行者: トークンを作った者です。
  • sub — 主体: トークンが誰・何についてのものか (多くはユーザー ID) です。
  • aud — 対象者: トークンが誰に向けられているかです。
  • jti — トークンの一意な識別子です。

よくある質問

私のトークンや鍵はどこかに送られますか?
いいえ。デコードと署名検証は Web Crypto API を使って完全にブラウザ内で動きます。トークン・シークレット・公開鍵が端末の外に出ることはないため、本番のトークンでも安全に調べられます。
どの署名アルゴリズムを検証できますか?
共有シークレットを使う HMAC (HS256、HS384、HS512) と、PEM 形式の公開鍵を使う RSA (RS・PS の変種) および ECDSA (ES256、ES384) です。アルゴリズムはトークンのヘッダーから自動的に判別されます。
JWT は暗号化されていますか?
いいえ。標準の署名済み JWT は符号化されているだけで、暗号化されていません — 誰でもヘッダーとペイロードを読めます。署名はトークンが改変されていないことを証明しますが、内容を隠しはしないため、ペイロードにシークレットを保存してはいけません。
RS256 トークンの検証に秘密鍵は必要ですか?
いいえ。非対称アルゴリズムは公開鍵で検証します。秘密鍵が必要なのはトークンを作る (署名する) ときだけで、確認するときには決して必要ありません。
トークンが期限切れと表示されるのはなぜですか?
exp クレームが端末の時計を基準に過去になっているためです。このツールは exp・nbf・iat をローカル時刻に変換し、状態を示すので、トークンの有効期間をひと目で確認できます。
HS256 と RS256 の違いは何ですか?
HS256 は対称です: 一つの共有シークレットが署名と検証の両方を行い、同じ当事者が両方を担うときに最も簡単です。RS256 は非対称です: 秘密鍵が署名し公開鍵が検証するので、多くの当事者が偽造できないままトークンを検証できます。
ペイロードを編集してトークンに署名し直せますか?
このツールは読み取り専用です: デコードと検証は行いますが、トークンの作成や再署名はしません。それにより用途を絞り、秘密の署名鍵を扱わずに済みます。