🎫
← ガむド䞀芧に戻る

JWT トヌクン構造の解説: ヘッダヌ、ペむロヌド、眲名

· タグ: jwt-structure, jwt-header, jwt-payload, jwt-signature, json-web-token

JWT トヌクン構造の解説

すべおの JSON Web TokenJWTは、2 ぀の圓事者間でクレヌムを運ぶ、コンパクトで URL セヌフな文字列です。その内郚構造を理解するこずは、トヌクンベヌスのセキュリティを扱うあらゆる開発者にずっお䞍可欠です。

JWT の 3 ぀の郚分

JWT はドット.で区切られた 3 ぀の郚分で構成されたす:

header.payload.signature

䟋:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

各郚分は base64url ゚ンコヌドされた JSON です。JWT は眲名されおおり、暗号化はされおいたせん — 誰でも内容をデコヌドしお読むこずができたす。

パヌト 1: ヘッダヌ

ヘッダヌには、眲名アルゎリズムずトヌクンの皮類ずいう、トヌクンに関するメタデヌタが含たれたす。

| フィヌルド | 説明 | 倀の䟋 | |-------|-------------|----------------| | alg | 眲名アルゎリズム必須 | HS256、RS256、ES256 | | typ | トヌクンの皮類オプション | JWT | | kid | キヌ IDオプション | "key-1" |

{
  "alg": "HS256",
  "typ": "JWT"
}

alg フィヌルドは、どのアルゎリズムで眲名が䜜成されたかを怜蚌者に䌝えたす。アルゎリズムの䞍䞀臎 — あるいは alg: "none" を受理するこず — は、䞀般的な JWT セキュリティ脆匱性です。

パヌト 2: ペむロヌド

ペむロヌドには、ナヌザヌに関するクレヌムずメタデヌタが含たれたす。クレヌムは 3 ぀のカテゎリに分類されたす:

登録枈みクレヌム

| クレヌム | 正匏名称 | 甹途 | |-------|-----------|---------| | iss | Issuer | トヌクンを発行した䞻䜓 | | sub | Subject | ナヌザヌを識別する | | aud | Audience | 意図された受信者 | | exp | Expiration | トヌクンの有効期限タむムスタンプ | | nbf | Not Before | この時刻より前はトヌクンが無効 | | iat | Issued At | トヌクンの䜜成タむムスタンプ | | jti | JWT ID | トヌクンを䞀意に識別する ID |

デコヌド枈みペむロヌドの䟋

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022,
  "exp": 1516242622,
  "iss": "https://auth.example.com"
}

公開クレヌムは IANA レゞストリで定矩されるか、衝突耐性のある URI を䜿甚したす。プラむベヌトクレヌムは、発行者ず消費者が合意したカスタムクレヌムです。

パヌト 3: 眲名

眲名は、゚ンコヌドされたヘッダヌ、゚ンコヌドされたペむロヌド、およびヘッダヌで指定されたアルゎリズムを䜿甚した秘密鍵を組み合わせお䜜成されたす。その圹割は次の 2 ぀です:

  1. 敎合性 — 眲名埌にトヌクンが改ざんされおいないこずを確認したす。
  2. 認蚌 — トヌクンが期埅された䞻䜓によっお眲名されたこずを蚌明したす。

HS256 眲名の䜜成

HMACSHA256(
  base64urlEncode(header) + "." + base64urlEncode(payload),
  secret
)

RS256 眲名の䜜成

RSASHA256(
  base64urlEncode(header) + "." + base64urlEncode(payload),
  privateKey
)

Base64url ず暙準 Base64 の比范

| 項目 | 暙準 Base64 | Base64url | |--------|-----------------|-----------| | 62 番目の文字 | + | - | | 63 番目の文字 | / | _ | | パディング | = | 省略される |

この゚ンコヌディングにより、JWT はパヌセント゚ンコヌディングなしで HTTP ヘッダヌ、ク゚リパラメヌタ、URL パスに察しお安党になりたす。

JWT の完党な䜜成プロセス

  1. ヘッダヌ JSON を䜜成し、base64url ゚ンコヌドしたす。
  2. ペむロヌド JSON を䜜成し、base64url ゚ンコヌドしたす。
  3. . 区切りで連結したす。
  4. 遞択したアルゎリズムず秘密鍵で眲名したす。
  5. 眲名を base64url ゚ンコヌドしたす。
  6. 3 ぀の郚分をすべお . 区切りで連結したす。

セキュリティに関する考慮事項

  • ペむロヌドに秘密情報を保存しないでください。 ペむロヌドぱンコヌドされおいるだけで、暗号化はされおいたせん。
  • 垞に眲名を怜蚌しおください。 怜蚌がなければ、誰でもトヌクンを停造できたす。
  • alg ヘッダヌを確認しおください。 alg: "none" ずアルゎリズムのダりングレヌド詊行を拒吊したす。
  • 短い有効期限を蚭定しおください。 exp クレヌムを数か月ではなく、数分たたは数時間単䜍で䜿甚したす。

JWT トヌクンをオンラむンでデコヌド

JWT デコヌダヌツヌルを䜿甚しお、任意のトヌクンを調べたす。貌り付けるだけで、デコヌドされたヘッダヌ、ペむロヌド、眲名アルゎリズムが即座に衚瀺されたす。すべおの凊理はブラりザ内で行われたす。

JWT トヌクン構造の解説: ヘッダヌ、ペむロヌド、眲名 - CoolTool