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.