使い方
- トークンを貼り付けます。「Bearer 」の接頭辞は付いていてもいなくてもかまいません。3 つの部分が色分けされて表示されます。
- デコードされたヘッダーとペイロードを確認します。iat、nbf、exp のクレームは日時と相対時間で表示されます。
- 署名を検証するには、HS256/384/512 なら共有シークレットを入力し、RS、PS、ES、EdDSA のトークンなら公開鍵(PEM または JWK)を貼り付けます。
- デコードした JSON は、必要に応じてコピーできます。
オプションの説明
- ヘッダー
- トークンのメタデータで、通常は alg(署名アルゴリズム)と typ が入ります。kid フィールドがあれば、どの鍵で署名されたかがわかります。
- ペイロード
- クレーム本体です。登録済みクレームには sub(主体)、iss(発行者)、aud(対象者)、iat(発行日時)、nbf(有効開始日時)、exp(有効期限)があり、時刻はすべて Unix 秒です。
- 署名
- ヘッダーとペイロードが改ざんされていないことを証明します。検証にはシークレット(HMAC)または発行者の公開鍵(RSA、ECDSA、EdDSA)が必要です。
- シークレットは Base64 エンコード済み
- HMAC のシークレットを Base64 エンコードして保存しているサービスもあります。手元のシークレットがエンコード済みの形式なら、これにチェックを入れてください。
主なクレーム
| クレーム | 意味 | 例 |
|---|---|---|
sub |
トークンの主体(ユーザー ID) | "1234567890" |
iss |
発行者 | "https://accounts.example.com" |
aud |
想定される受信者 | "my-api" |
exp |
有効期限(Unix 秒) | 1790427600 |
iat |
発行日時(Unix 秒) | 1790424000 |
nbf |
この日時より前は無効(Unix 秒) | 1790424000 |
jti |
トークンの一意な ID。リプレイ攻撃の防止に使用 | "a1b2c3" |
例
トークン eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c をデコードすると、ヘッダーは {"alg":"HS256","typ":"JWT"}、ペイロードには sub、name、iat(2018 年 1 月 18 日)が含まれています。シークレット your-256-bit-secret を使うと署名の検証に成功します。
よくある質問
本番環境の JWT を貼り付けても安全ですか?
トークンはブラウザ内の JavaScript でデコードされ、アップロードやログ記録はされません。ただし、アクセストークンはパスワードと同じように扱ってください。有効なトークンを持っていれば、期限が切れるまで誰でも使えてしまいます。
JWT をデコードできれば本物だと言えますか?
いいえ。ヘッダーとペイロードは Base64URL でエンコードされているだけなので、誰でも読めますし偽造もできます。正しい鍵で署名の検証に成功して初めて、想定した発行元が発行したトークンだと確認できます。
正しいシークレットなのに検証に失敗するのはなぜですか?
シークレットが Base64 エンコードされていないか、末尾にスペースや改行が入っていないか、ヘッダーのアルゴリズムが発行元の使っているものと一致しているかを確認してください。トークンが 1 文字でも変わると署名は無効になります。
「alg none」とは何ですか?
署名なしであることを示すトークンです。サーバーは明示的に想定している場合を除き、このようなトークンを拒否する必要があります。受け入れてしまったことで、実際に認証回避が起きた事例があります。
RS256 トークンの公開鍵はどこで入手できますか?
ID プロバイダーは鍵を JWKS として公開しており、通常は /.well-known/jwks.json にあります。トークンのヘッダーの kid と一致する鍵をコピーし、JWK としてここに貼り付けてください。
プライバシー
このツールはすべてブラウザ内で動作します。ファイルやテキストはお使いの端末上で処理され、当サイトのサーバーにアップロードされることはありません。