Типы ключей (kty): EC с crv (P-256, P-384, P-521, secp256k1), x и y; RSA с n и e (и d, p, q, dp, dq, qi для закрытых ключей); OKP (RFC 8037) с crv Ed25519, Ed448, X25519 или X448 и x; oct с k для симметричных ключей. Значения — целые числа в порядке big-endian или строки байтов в кодировке base64url; координаты имеют фиксированную длину (32 байта для P-256), поэтому удаление ведущих нулевых байтов ломает ключи.
Необязательные метаданные: kid, alg (привязывает ключ к одному алгоритму), use (sig или enc), key_ops, а также ссылки на сертификаты x5c или x5t#S256. Закрытый JWK содержит d; никогда не публикуйте это поле и удаляйте его, прежде чем помещать ключ в JWKS. Инструменты этого сайта отклоняют JWK с d везде, где нужен только открытый ключ.
Преобразование в PEM и обратно не теряет ключевой материал; его выполняют node:crypto (createPublicKey и export с format: "jwk"), импорт и экспорт jwk в WebCrypto и конвертер JWK.