Listar las claves de firma
GET /v1/signing-keys · permiso signing-keys:read
Devuelve las claves de firma de tokens publicadas actualmente en el JWKS del entorno: next (publicada, aún no firma), active (firma los tokens nuevos) y retired (dejó de firmar; sigue publicada 7 días para que los tokens que firmó sigan verificándose). El orden es next, active y luego retired (de la más reciente a la más antigua). No se devuelven las claves que salieron del JWKS ni las revocadas por una rotación de emergencia. La respuesta solo contiene información pública: kid es la huella JWK SHA-256 de RFC 7638 (base64url) y ninguna respuesta contiene material de clave privada, que nunca sale del servicio de firma.
Solicitud
Esta operación no recibe campos de ruta, consulta ni cuerpo. El entorno proviene de la credencial.
Respuesta
200 OK con data (claves) y list_metadata. La lista es tan pequeña como el JWKS y no se pagina; ambos cursores son siempre null. activated_at es null en la clave next; retired_at y removal_at (cuándo sale la clave del JWKS) solo tienen valor en las claves retired.
{
"data": [
{
"kid": "ypeBEsobvcr6wjGzmiPcTaeG7_gUfE5yuYB3ha_uSLs",
"use": "token_signing",
"algorithm": "RS256",
"state": "next",
"storage": "wrapped",
"created_at": "2026-09-05T09:30:00.123456Z",
"activated_at": null,
"retired_at": null,
"removal_at": null
},
{
"kid": "PiPoFgA5WUoziU9lZOGxNIu9egCI1CxKy3PurtWcAJ0",
"use": "token_signing",
"algorithm": "RS256",
"state": "active",
"storage": "wrapped",
"created_at": "2026-03-09T09:30:00.123456Z",
"activated_at": "2026-09-05T09:30:00.123456Z",
"retired_at": null,
"removal_at": null
},
{
"kid": "Ln0sA6lQeuJl7PW1NWiFpTOTogKdJBOUmXJloaJa78Y",
"use": "token_signing",
"algorithm": "RS256",
"state": "retired",
"storage": "wrapped",
"created_at": "2025-09-10T09:30:00.123456Z",
"activated_at": "2026-03-09T09:30:00.123456Z",
"retired_at": "2026-09-05T09:30:00.123456Z",
"removal_at": "2026-09-12T09:30:00.123456Z"
}
],
"list_metadata": {
"before": null,
"after": null
}
}
Errores
| HTTP | código | Cuándo |
|---|---|---|
| 401 | unauthenticated |
La credencial falta, es inválida o ha sido revocada. |
| 403 | insufficient_permissions |
La credencial carece del permiso requerido. |
| 429 | rate_limited |
Se superó el límite de velocidad; reintente después del período Retry-After. |
| 501 | not_implemented |
La operación aún no está disponible en este despliegue; reintentar no cambia el resultado. |
| 503 | service_unavailable |
Una dependencia no está disponible temporalmente; reintente después del período Retry-After. |
Ejemplo
curl https://api.eu.keenauth.com/v1/signing-keys \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"