JWTデコーダー
JWTトークンのHeader・Payload・Signatureを色分け表示。有効期限も自動チェック
データはサーバーに送信されません — すべてブラウザ上で処理
Header
ALGORITHM & TOKEN TYPE Payload
DATA Signature
VERIFY SIGNATUREJWTとは
JWT(JSON Web Token、読み方: ジョット)は、RFC 7519で標準化された、当事者間で情報をJSON形式で安全に転送するためのトークン規格です。OAuth 2.0やOpenID Connectの認証・認可フローで広く使われており、APIの認証トークンとしてデファクトスタンダードになっています。
JWTの構造
JWTは3つの部分がドット(.)で区切られた文字列です。
- Header(ヘッダー): トークンの種類(typ)と署名アルゴリズム(alg)を格納。HS256、RS256などが一般的です。
- Payload(ペイロード): トークンのデータ本体。ユーザーIDや有効期限などのクレーム(Claim)が含まれます。標準クレームにはiss(発行者)、sub(主題)、exp(有効期限)、iat(発行日時)などがあります。
- Signature(署名): HeaderとPayloadを秘密鍵で署名したもの。トークンの改ざん検知に使われます。
HeaderとPayloadはBase64URLエンコードされているだけなので、誰でもデコードして中身を読めます。そのため、JWTのPayloadに機密情報(パスワード等)を含めてはいけません。
JWTのセキュリティ注意点
- Payloadは暗号化されていない: Base64URLデコードするだけで中身が読めるため、秘密情報は含めないでください。暗号化が必要な場合はJWE(JSON Web Encryption)を使います。
- alg: "none"攻撃: 署名なしトークンを受け入れないよう、サーバー側で必ずアルゴリズムを指定してください。
- 有効期限を短く設定する: 漏洩リスクを最小化するため、アクセストークンの有効期限は短く(15分〜1時間)設定し、リフレッシュトークンで更新するのがベストプラクティスです。
- トークンの安全な保管: ブラウザではHttpOnly Cookieでの保管が推奨されます。localStorageへの保管はXSS攻撃のリスクがあります。