本文へスキップ
ecdsa.com

JWS(JSON Web Signature)

JSON で記述したパラメーターを使って署名または MAC を付けたコンテンツのための RFC 7515 の JOSE 形式で、ヘッダー、ペイロード、署名をドットで連結したコンパクトな形式(header.payload.signature)か、複数の署名を持てる JSON 形式でシリアライズされます。
別表記JSON Web SignatureRFC 7515compact JWS

署名入力は ASCII(base64url(protected header) ‖ "." ‖ base64url(payload)) で、署名または MAC はまさにこのバイト列に対して計算されます。そのため、ヘッダーやペイロードをエンコードし直すと署名は無効になります。コンパクトシリアライゼーション(§3.1、§7.1)は単一の署名と保護ヘッダーを運び、JSON シリアライゼーション(§7.2)では複数の署名と、保護されないヘッダーメンバーを使えます。

ヘッダーパラメーター(§4.1)には、alg(必須)、kid、typ、cty、crit と、鍵を運ぶメンバー jwk、jku、x5c、x5u、x5t、x5t#S256 があり、これらのメンバーだけを根拠に検証鍵を選んではいけません。RFC 7797 は、エンコードしないペイロードのための b64: false を追加しており、これは Open Banking の x-jws-signature ヘッダーのような分離署名で使われます。

目にする JWT は、ほぼ例外なく JWS です。ACME のリクエスト、DPoP プルーフ、SD-JWT の発行者署名、多くの webhook 署名も JWS です。

規格と参考文献

すべての用語