本文へスキップ
SPCXTools

JWTデコーダー

JSON Web Tokenのデコード、有効期限の確認、HMAC署名の検証を、お使いのブラウザ上で安全に行えます。

ローカルで動作 — ファイルは端末から出ません

ツールを読み込み中…

JWTデコーダーの使い方

  1. 1「トークン」ボックスにJWT(ドットで区切られた3つのBase64URLパート)を貼り付けるか、「サンプルを読み込む」をクリックします。
  2. 2デコードされたヘッダーとペイロードが、整形されたJSON形式で表示されます。
  3. 3ステータス行でトークンが有効か、期限切れか、まだ有効期間が始まっていないかを確認できます。時刻に関するクレームは、人間が読める日付形式で表示されます。
  4. 4HS256、HS384、HS512トークンの場合は、シークレットを入力してローカルで署名を検証できます。

JSON Web Tokenをデコード

JSON Web Token(JWT)は、システム間でIDや権限情報を渡すために使われるコンパクトな文字列で、多くの場合、ログイン後にAuthorization: Bearerヘッダーとして使用されます。一見ランダムなテキストに見えますが、Base64URLでエンコードされた3つの部分、すなわちヘッダー、クレームを含むペイロード、そして署名で構成されています。このJWTデコーダーは、トークンを分割し、最初の2つの部分を読みやすいJSONにデコードし、重要なクレームについて説明します。デコードと検証はローカルで行われるため、あなたのトークンが外部に送信されることはありません。

主な機能

  • ヘッダーとペイロードをデコードして整形表示。それぞれにコピーボタン付き。
  • 時刻クレームの解説:iat、nbf、exp、auth_timeをエポック秒からあなたのタイムゾーンの日付に変換して表示。
  • 有効期限チェックにより、トークンが期限切れか、まだ有効期間が始まっていないかを一目で確認可能。
  • ブラウザのWeb Crypto APIを使用した、HS256、HS384、HS512のHMAC署名検証。
  • ページ読み込み後はオフラインで動作。データが外部に送信されることは一切ありません。

利用シーン

認証のデバッグに。 リクエストが401 Unauthorizedで失敗した際、トークンをデコードして有効期限が切れていないか、正しいオーディエンス(aud)向けに発行されているか、期待されるロールやスコープを持っているかを確認できます。

APIの構築とテストに。 サーバーが意図したクレームを正しい有効期限でトークンに含めているか、リリース前に確認できます。

OAuthやOpenID Connectの学習に。 IDプロバイダーが発行するIDトークンやアクセストークンは、多くの場合JWTです。テスト用のトークンをデコードすることで、プロバイダーがユーザーについてどのような情報を共有しているかを確認できます。

JWTの構造

header.payload.signature

  • ヘッダー — トークンのタイプと署名アルゴリズム。例:{"alg":"HS256","typ":"JWT"}。
  • ペイロード — クレーム(属性情報)。登録済みクレームにはiss(発行者)、sub(主題、通常はユーザーID)、aud(オーディエンス)、exp、nbf、iat、jti(トークンID)などがあります。アプリケーションはnameやroleといったカスタムクレームを追加することもできます。
  • 署名 — header.payloadをシークレット(HMAC)または秘密鍵(RSA、ECDSA、EdDSA)で署名して作成されます。ヘッダーやペイロードが1文字でも変更されると、署名は一致しなくなります。

ペイロードはエンコードされているだけなので、パスワードなどの機密情報をJWTに含めてはいけません。他のBase64データをデコードするにはBase64ツールを、タイムスタンプを調べるにはUnixタイムスタンプ変換ツールをご利用ください。

よくある質問

ここに本番環境のトークンを貼り付けても安全ですか?
トークンのデコードと検証はすべてブラウザ内で完結し、当社のサーバーに送信されることはありません。とはいえ、JWTは認証情報です。パスワードのように扱い、本番環境のトークンを共有することは避け、可能な限りテスト用のトークンを使用してください。
JWTをデコードできれば、そのトークンが本物であると証明されますか?
いいえ。ヘッダーとペイロードは暗号化されているわけではなく、Base64URLでエンコードされているだけなので、誰でもデコードできます。トークンが信頼できるのは、その署名が正しい鍵で検証された場合のみです。HMACトークンは、ここでシークレットを入力して検証できます。RSAおよびECDSAトークンは、アプリケーション内で発行者の公開鍵を使って検証する必要があります。
exp、iat、nbfは何を意味しますか?
exp(expiration time)はトークンが無効になる時刻、iat(issued at)はトークンが作成された時刻、nbf(not before)はトークンが使用可能になる最も早い時刻です。これらはすべて秒単位のUnixタイムスタンプで、このデコーダーはそれらをあなたのタイムゾーンの日付に変換します。
トークンが無効だと表示されるのはなぜですか?
JWTは、ドットで区切られた正確に3つのパートで構成され、最初の2つはBase64URLでエンコードされたJSONでなければなりません。Bearer という接頭辞や引用符、改行を含めずに、トークン全体をコピーしたか確認してください。
暗号化されたトークン(JWE)もデコードできますか?
いいえ。暗号化されたJWT(JWE)は5つのパートで構成され、そのペイロードは復号鍵がなければ読み取れません。このツールは、ほとんどのAPIで使われている署名付きトークン(JWS)に対応しています。