search

Found

info 概要

JWT の署名が正しいか HS256 で再計算して照合。header.payload を秘密鍵で HMAC-SHA-256 し、有効・不一致・alg 非対応の 3 状態で判定。RS256/ES256 は対象外。

📘 使い方

  1. JWT を header.payload.signature の形式でそのまま貼り付ける
  2. 発行時に使った HMAC 共有秘密鍵を入力する
  3. 署名検証の欄で「有効・不一致・alg 非対応」のどれかを確認する

JWT HS256 署名検証

※ アルゴリズム: HS256 (HMAC-SHA-256)。header.payload を秘密鍵で HMAC し base64url エンコード

※ HS256 専用。RS256 / ES256 など公開鍵方式は本ツールでは扱いません

署名検証

ヘッダー (JSON)
ペイロード (JSON)
再計算した署名 (base64url)
コピーしました!
Article

JWT HS256 署名検証 | 秘密鍵で署名一致をその場で確かめる検証ツール

貼り付けた JWT のヘッダーとペイロードを秘密鍵で HMAC-SHA-256 し、再計算した署名をトークンの 3 番目のセグメントと突き合わせる。結果は「有効」「不一致」「alg が HS256 以外」の 3 状態で表示し、header と payload は JSON に整形して並べる。

💡 このツールについて

JWT のデバッグで一番つまずくのは「トークンは読めるのに、署名が合っているか分からない」場面。デコーダー系のツールは base64url を開いて中身を見せてくれるが、署名そのものが正しいかは別問題で、秘密鍵を使った再計算が要る。

このツールは header.payload を共有秘密鍵で HMAC-SHA-256 し、base64url にエンコードした値を、トークン末尾の署名と文字列比較する。一致すれば「有効」、ずれていれば「不一致」、ヘッダーの algHS256 以外なら「alg 非対応」として弾く。秘密鍵を 1 文字変えたり、ペイロードを書き換えたりすると即座に不一致へ変わるので、どの値が署名を壊しているかを切り分けられる。

対象は HS256(HMAC 方式)のみ。RS256 や ES256 のような公開鍵・楕円曲線方式は秘密鍵ではなく鍵ペアで検証するため、本ツールでは扱わない。alg がそれらだった場合は「alg 非対応」と明示する。

🧐 よくある質問

Q. デコーダーと何が違う? デコーダーは header と payload を base64url から開いて表示するだけで、署名の正否は判定しない。このツールは秘密鍵で HMAC を再計算し、トークンの署名と一致するかまで確認する。

Q. 署名が「不一致」になる主な原因は? 秘密鍵の取り違え、ペイロードの改ざん、トークンのコピー時に末尾が欠けた、header.payload の区切りがずれた、のいずれか。1 つずつ戻して確かめると原因を絞れる。

Q. 秘密鍵はどの形式で入れる? HS256 の共有秘密鍵を UTF-8 文字列としてそのまま入力する。base64 でエンコードされた鍵を使っている場合は、発行側が秘密鍵として渡している文字列と同じものを入れる。

Q. 期限切れ(exp)も判定する? このツールは署名の一致だけを見る。expnbf などのクレーム検証は行わないので、payload の JSON を目視で確認する。

Q. alg を none にしたトークンは? algHS256 以外(none を含む)なら「alg 非対応」と表示する。none を受け入れる実装は脆弱性になり得るため、検証側では拒否するのが基本。

📚 豆知識

HS256 の「HS」は HMAC using SHA-256 の略で、JWT のアルゴリズム仕様(RFC 7518 / JWA §3.1)では唯一の実装必須アルゴリズムとして定められている。共有秘密鍵 1 つで署名と検証の両方を行えるため小規模なシステムで広く使われる一方、発行側と検証側が同じ鍵を持つ必要があり、鍵が漏れると誰でも有効なトークンを作れてしまう。署名は header と payload を . でつないだ「signing input」に対して計算され、トークンの 3 番目のセグメントは payload の中身そのものではなく、この signing input から導いた MAC である点が見落とされやすい。

入力した JWT と秘密鍵はブラウザの中だけで処理され、サーバーには送信されない。HMAC の計算も標準の Web Crypto API でローカルに完結する。