Importa i metadati IdP SAML in una connessione

POST /v1/connections/{connection_id}:import-metadata · autorizzazione connections:write

Applica al connessione SAML enterprise un documento di metadati SAML 2.0 caricato dal provider di identità.

Su una connessione attiva, un documento che modifica l'entity ID o l'URL SSO del provider di identità, oppure che rimuove un pin di firma, non viene applicato. L'intera importazione diventa una bozza di revisione: la risposta mostra la parte del provider di identità attiva, invariata, added_certificate_fingerprints è vuoto e revision è valorizzato. Testa la bozza con Testa una connessione e revision_id, poi pubblicala. Le altre importazioni (nuovi certificati, URL SLO, valori MFA) vengono applicate direttamente.

Il documento viene analizzato con limiti rigidi (massimo 1 MiB, nessun DOCTYPE). Quando il documento non è valido la risposta non indica il motivo e né il motivo né il contenuto del documento vengono registrati nei log. Un documento con più elementi EntityDescriptor richiede entity_id. La richiesta non accetta l'header If-Match perché il materiale SAML non ha una versione. Le scritture vengono registrate in audit come connection.idp_metadata_imported, più connection.idp_certificate_added per ogni nuovo certificato.

Richiesta

Campo Tipo Obbligatorio Descrizione
connection_id path sì ID della connessione SAML enterprise (conn_…).
metadata_xml string sì Il documento di metadati (EntityDescriptor o EntitiesDescriptor), massimo 1 MiB.
entity_id string per più entità L'entity ID del provider di identità da prendere da un documento con più entità. Con una sola entità deve corrispondere.
mfa_authn_context_values array | null no Valori AuthnContextClassRef di SAML che il provider di identità considera autenticazione a più fattori (massimo 10). Quando sono indicati (anche una lista vuota) vengono memorizzati; quando sono omessi o null vengono mantenuti quelli memorizzati.

Risposta

200 OK:

{
  "idp_entity_id": "https://idp.example.com/entity",
  "idp_sso_url": "https://idp.example.com/sso/redirect",
  "idp_slo_url": null,
  "certificates": [
    {"id": "conncert_01j9xq2m4n6p8r0s2t4v6w8y0a", "sha256_fingerprint": "3b0c…", "not_before": "2026-01-01T00:00:00Z", "not_after": "2028-01-01T00:00:00Z", "source": "manual"}
  ],
  "added_certificate_fingerprints": ["3b0c…"]
}
Campo Descrizione
idp_entity_id, idp_sso_url, idp_slo_url La parte del provider di identità dopo l'importazione; idp_slo_url è null quando il documento non ha un servizio di single logout.
certificates I certificati di firma attivi della connessione (vedi Elenca i certificati).
added_certificate_fingerprints Impronte SHA-256 dei certificati aggiunti da questa importazione; i certificati già registrati non sono elencati.
revision Solo quando l'importazione è diventata una bozza di revisione: la bozza (vedi Elenca le revisioni).

Errori

HTTP code Quando
404 not_found La connessione non esiste in questo ambiente o non è una connessione enterprise.
409 conflict La connessione non è una connessione SAML, non ha ancora una configurazione SAML oppure l'importazione supererebbe 3 certificati attivi (non viene modificato nulla).
422 validation_failed Il documento o un campo non è valido; errors[] indica il campo (/metadata_xml, /entity_id, /mfa_authn_context_values). Negli ambienti di staging e produzione viene rifiutato anche un provider di identità di test su /metadata_xml: un entity ID nel dominio riservato .invalid, oppure la chiave pubblica di test del server mock locale.
413 payload_too_large Il corpo della richiesta supera 4 MiB.
400 unknown_field Il corpo contiene un campo sconosciuto.
401 unauthenticated La credenziale è mancante, non valida o revocata.
403 insufficient_permissions La credenziale non ha l'autorizzazione richiesta.
429 rate_limited È stato superato il limite di richieste; riprova dopo il periodo indicato in Retry-After.
503 service_unavailable Una dipendenza è temporaneamente non disponibile; riprova dopo il periodo indicato in Retry-After.

Esempio

jq -Rs '{metadata_xml: .}' idp-metadata.xml > import.json
curl -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b:import-metadata" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d @import.json
keenauth connections import-metadata conn_01j9xp6q0r1s5t7v9w1x3y5z7b --metadata-file idp-metadata.xml