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