Saltar al contenido principal

invalid_signature

El JWT firmado no verifica contra la clave pública registrada, o alguno de sus claims no coincide con la petición.

HTTPcode¿Reintentable?
401invalid_signatureno

Cuándo ocurre

Firma incorrecta, sub/uri/bodyHash que no coinciden, exp - iat > 60s, o falta el nonce.

Valores de reason

La respuesta trae un campo reason que nombra la primera comprobación que falló. Las comprobaciones corren en el orden de la tabla, así que un bad_body_hash implica que sub y uri ya coincidían. Ramifica sobre reason, no sobre detail.

reasonSignificado
no_signing_keyLa llave no tiene ninguna clave de firma activa. Sube la clave pública (SPKI) desde el panel.
bad_jwtEl JWT no verifica contra ninguna clave de firma activa, o está malformado o vencido. Verificamos contra todas las claves activas, así que esto no es un solapamiento de rotación.
bad_subEl claim sub no es idéntico a la cabecera X-API-Key. Ambos son el prefijo de la llave.
bad_uri_claimEl claim uri no es "MÉTODO /ruta?query" exactamente como se envía, query incluida.
missing_iat_expFalta iat o exp, o alguno no es numérico.
exp_too_farexp - iat > 60 segundos.
bad_body_hashbodyHash no es el SHA-256 hex de los bytes crudos que enviaste. Serializa el cuerpo una sola vez y envía esos bytes.
missing_nonceFalta el claim nonce. Un nonce repetido es distinto: devuelve nonce_reused.

Cómo resolverlo

Reconstruye el JWT: sub = prefijo de la llave, uri = "MÉTODO /ruta?query" exacto, bodyHash = SHA-256 hex de los bytes crudos del cuerpo, exp ≤ iat + 60. Firma con la clave privada cuyo par público subiste.

Ejemplo

{
"type": "https://docs.skipo.com/errors/invalid_signature",
"title": "Invalid signature",
"status": 401,
"code": "invalid_signature",
"retryable": false,
"detail": "El JWT firmado no verifica contra la clave pública registrada, o alguno de sus claims no coincide con la petición.",
"reason": "bad_sub"
}

Volver al catálogo de errores · Ver el formato de errores.