La entrada de firma es ASCII(base64url(protected header) ‖ "." ‖ base64url(payload)), y la firma o el MAC se calcula exactamente sobre esos bytes, así que volver a codificar el encabezado o la carga útil la invalida. La serialización compacta (§3.1, §7.1) lleva una firma y un encabezado protegido; la serialización JSON (§7.2) admite varias firmas y miembros de encabezado no protegidos.
Parámetros del encabezado (§4.1): alg (obligatorio), kid, typ, cty, crit y los miembros que transportan claves jwk, jku, x5c, x5u, x5t y x5t#S256, en los que nunca se debe confiar por sí solos para elegir una clave de verificación. El RFC 7797 añade b64: false para cargas útiles sin codificar, que usan las firmas separadas como el encabezado x-jws-signature de Open Banking.
Casi cualquier JWT que encuentres es un JWS; las solicitudes de ACME, las pruebas DPoP, las firmas del emisor en SD-JWT y muchas firmas de webhooks también son JWS.