Ajouter un certificat de signature IdP à une connexion

POST /v1/connections/{connection_id}/certificates · autorisation connections:write

Ajoute un certificat de signature du fournisseur d'identité à une connexion SAML d'entreprise. Utilisez-le pour envoyer le certificat à la main ou pour faire tourner les certificats : ajoutez d'abord le nouveau certificat, basculez le fournisseur d'identité, puis supprimez l'ancien. La rotation prend effet immédiatement, y compris sur une connexion active.

Le certificat est un bloc PEM CERTIFICATE (8 KiB au plus). Il ne doit pas être expiré et doit avoir une clé RSA d'au moins 2048 bits ou une clé ECDSA P-256, P-384 ou P-521. Lorsqu'il est refusé, la réponse n'indique pas la raison, et ni la raison ni le contenu du certificat ne sont journalisés. Une connexion compte au plus 3 certificats actifs. Un certificat supprimé de la connexion ne peut pas être ajouté à nouveau. La requête n'accepte pas d'en-tête If-Match. Les écritures sont auditées sous connection.idp_certificate_added.

Requête

Champ Type Obligatoire Description
connection_id chemin oui ID de connexion SAML d'entreprise (conn_…).
certificate chaîne oui Un certificat PEM (-----BEGIN CERTIFICATE----- …), 8 KiB au plus.

Réponse

201 Created avec le nouveau certificat (voir Lister les certificats). Lorsque le même certificat est déjà présent sur la connexion, la réponse est 200 OK avec le certificat enregistré ; rien n'est écrit ni audité.

{"id": "conncert_01j9xq2m4n6p8r0s2t4v6w8y0a", "sha256_fingerprint": "3b0c…", "not_before": "2026-01-01T00:00:00Z", "not_after": "2028-01-01T00:00:00Z", "source": "manual"}

Erreurs

HTTP code Quand
404 not_found La connexion n'existe pas dans cet environnement ou n'est pas une connexion d'entreprise.
409 conflict La connexion n'est pas une connexion SAML, n'a pas encore de configuration SAML, a déjà 3 certificats actifs, ou le certificat a été supprimé de la connexion auparavant.
422 validation_failed Le certificat est absent, trop volumineux ou non accepté ; errors[] pointe vers /certificate. Les environnements de préproduction et de production refusent aussi un certificat correspondant à la clé de test publique du serveur de simulation local.
400 unknown_field Le corps contient un champ inconnu.
401 unauthenticated L'identifiant est absent, invalide ou révoqué.
403 insufficient_permissions L'identifiant ne dispose pas de l'autorisation requise.
429 rate_limited La limite de débit a été dépassée ; réessayez après la durée indiquée par Retry-After.
503 service_unavailable Une dépendance est temporairement indisponible ; réessayez après la durée indiquée par Retry-After.

Exemple

jq -Rs '{certificate: .}' idp-signing.pem > cert.json
curl -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/certificates" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d @cert.json
keenauth connections certificates add conn_01j9xp6q0r1s5t7v9w1x3y5z7b --certificate-file idp-signing.pem