Lister les clés de signature

GET /v1/signing-keys · permission signing-keys:read

Renvoie les clés de signature de jetons actuellement publiées dans le JWKS de l'environnement : next (publiée, ne signe pas encore), active (signe les nouveaux jetons) et retired (ne signe plus ; reste publiée 7 jours pour que les jetons qu'elle a signés restent vérifiables). L'ordre est next, active, puis retired (de la plus récente à la plus ancienne). Les clés sorties du JWKS et les clés révoquées par une rotation d'urgence ne sont pas renvoyées. La réponse ne contient que des informations publiques : kid est l'empreinte JWK SHA-256 RFC 7638 (base64url) et aucune réponse ne contient de clé privée, qui ne quitte jamais le service de signature.

Requête

Cette opération ne prend aucun paramètre de chemin, de requête ni de corps. L'environnement provient de l'authentification.

Réponse

200 OK avec data (clés) et list_metadata. La liste est aussi petite que le JWKS et n'est pas paginée : les deux curseurs valent toujours null. activated_at vaut null pour la clé next ; retired_at et removal_at (moment où la clé quitte le JWKS) ne sont renseignés que pour les clés 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
  }
}

Erreurs

HTTP code Quand
401 unauthenticated L'authentification est manquante, invalide ou révoquée.
403 insufficient_permissions L'authentification manque la permission requise.
429 rate_limited La limite de débit a été dépassée ; réessayez après la période Retry-After.
501 not_implemented L'opération n'est pas encore disponible dans ce déploiement ; réessayer ne change pas le résultat.
503 service_unavailable Une dépendance est temporairement indisponible ; réessayez après la période Retry-After.

Exemple

curl https://api.eu.keenauth.com/v1/signing-keys \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"