JWTデコード・解析
JWTをブラウザ上で分解し、Header・Payload・署名を確認できる解析ツール。認証トークンのクレーム確認、有効期限調査、HMAC署名検証に使える。
使い方
- JWT文字列を入力する。
- HeaderとPayloadのJSONを確認する。
- exp、nbf、iatなどの時刻クレームと有効期限状態を確認する。
- HS256、HS384、HS512の場合はHMAC秘密鍵を入力して署名一致を確認する。
JWT解析
署名検証: 検証待ち
有効期限 exp4102444800 (2100-01-01T00:00:00.000Z)
発行時刻 iat1516239022 (2018-01-18T01:30:22.000Z)
期限状態期限内
{
"alg": "HS256",
"typ": "JWT"
}{
"sub": "1234567890",
"name": "Restring",
"iat": 1516239022,
"exp": 4102444800
}lSacD8mcneUOosKS6cU2e_oVWy5cNGp4d6eYWNyLbQw
こんな用途に
- 認証トークンのHeader、Payload、Signatureを分解したいとき。
- exp、nbf、iatなどの時刻クレームを確認したいとき。
- HS256などHMAC署名が期待通りか検証したいとき。
仕組み
- JWTをドット区切りでHeader、Payload、Signatureへ分割。
- HeaderとPayloadをBase64URLデコードし、JSONとして整形表示。
- HMAC系アルゴリズムはWeb Crypto APIで署名を再計算し、JWT内の署名と比較。
- RS256やES256など公開鍵方式の署名検証は未対応。
確認ポイント
- JWTのPayloadはデコードできても署名検証なしでは信頼できない。
- 秘密情報を含む本番トークンは扱いに注意し、必要な範囲だけ確認する。
手元でやるには
HeaderとPayloadをデコード
必要環境: Python 3python3 -c 'import base64,json,sys; t=sys.stdin.read().strip().split("."); dec=lambda s: json.dumps(json.loads(base64.urlsafe_b64decode(s+"="*((4-len(s)%4)%4))),ensure_ascii=False,indent=2); print("Header:\n"+dec(t[0])+"\nPayload:\n"+dec(t[1]))'HS256署名を検証
必要環境: Python 3、HMAC秘密鍵python3 -c 'import base64,hmac,hashlib,sys; token=sys.stdin.read().strip(); secret=b"secret"; h,p,s=token.split("."); sig=base64.urlsafe_b64encode(hmac.new(secret,f"{h}.{p}".encode(),hashlib.sha256).digest()).decode().rstrip("="); print("署名一致" if sig==s else "署名不一致")'関連ツール
よくある質問
JWTをデコードすると署名検証も済む?
デコードだけでは署名検証にならない。HMAC系は秘密鍵を入力した場合に署名一致を確認できる。
期限切れJWTを確認できる?
exp、nbf、iatなどの時刻クレームを読み取り、有効期限状態の確認に使える。