mcpField
J
jwt-decode

jwt-decode

github.com/jsonwebtokenセキュリティ20720 回インストール29 週間前に更新
リポジトリ

jwt-decode について

jwt-decodeは、署名を検証せずにJWTの内容を確認するスキルです。クレームや時刻を表示し、複数のセキュリティ上の懸念を指摘します。署名の検証にはjwt-validateを使用します。

主な機能

  1. 01JWTヘッダーとペイロードのデコード
  2. 02生の署名文字列の表示
  3. 03トークン時刻のUTC変換
  4. 04一般的なセキュリティリスクの指摘
  5. 05ネストしたJWTの再帰デコード

活用シーン

  1. 01JWTのクレーム確認
  2. 02トークンの有効期限確認
  3. 03クレーム内の機密データ検出
  4. 04ネストしたJWTの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jsonwebtoken/jwt-skills --skill jwt-decode

インストール後、Claude Code で/jwt-decodeを入力して読み込まれたか確認します。

詳細

JWT のデコード

ヘッダーとペイロードを base64url デコードして JWT をデコードします。署名の検証は行いません。検証には jwt-validate を使用してください。

手順

  1. トークンを . で分割し、3 つの部分(ヘッダー、ペイロード、署名)にします。
  2. 1 番目と 2 番目の部分を base64url デコードし、JSON として解析します。
  3. ヘッダー、ペイロード(すべてのクレームを含む)、生の署名文字列を表示します。
  4. exp、nbf、iat について、Unix タイムスタンプと人間が読める UTC 時刻の両方を表示します。exp が過去の場合は、期限切れと経過時間を記載します。
  5. セキュリティチェックを実行します(以下を参照)。

出力形式

## Header
{ "alg": "RS256", "typ": "JWT", "kid": "abc123" }

## Payload
{ "iss": "https://auth.example.com/", "sub": "user|12345", "exp": 1735689600 }

exp: 2025-01-01T00:00:00Z — EXPIRED (3 months ago)
iat: 2024-12-31T00:00:00Z

## Signature
Algorithm: RS256 | Signature: [base64url string]
(Not verified — use jwt-validate to verify)

セキュリティチェック

以下が見つかった場合は、目立つように警告します。

  • alg: none — トークンに署名がありません。「このトークンには署名がなく、信頼できません。誰でも作成または変更できます。」と警告します。これは既知の攻撃手法(CVE-2015-9235)であり、攻撃者が署名を取り除いて検証を回避します。
  • ペイロード内の機密データ — JWT は暗号化されず、エンコードされます。クレーム内にパスワード、シークレット、API キー、または PII が見つかった場合は警告します。
  • exp の欠落 — トークンの有効期限がありません。セキュリティリスクとして警告します。
  • ヘッダー内の jku/jwk/x5u — これらは、検証側をだまして攻撃者が制御するキーを取得させるために使われる可能性があります。存在する場合は警告します。

注意事項

  • cty ヘッダーが "JWT" の場合、ペイロードはネストされた JWT です。再帰的にデコードします。
  • デコードに失敗した場合は、具体的なエラー(不正な base64、無効な JSON、セグメント数の誤り)を報告します。
  • このスキルで確認できるのはトークンの内容のみであり、真正性については何も判断できません。検証には jwt-validate を案内してください。

コメント