Importar metadatos SAML del IdP en una conexión

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

Aplica un documento de metadatos SAML 2.0 subido por el proveedor de identidad a una conexión SAML empresarial.

En una conexión activa, un documento que cambie el ID de entidad o la URL de SSO del proveedor de identidad, o que elimine un anclaje de firma, no se aplica. Toda la importación se convierte en una revisión en borrador: la respuesta muestra la parte del proveedor de identidad activa, sin cambios, added_certificate_fingerprints está vacío y se establece revision. Pruebe el borrador con Probar una conexión y revision_id, y después publíquelo. Las demás importaciones (nuevos certificados, URL de SLO, valores de MFA) se aplican directamente.

El documento se analiza con límites estrictos (como máximo 1 MiB, sin DOCTYPE). Cuando el documento no es válido, la respuesta no indica el motivo y ni el motivo ni el contenido del documento se registran. Un documento con varios elementos EntityDescriptor requiere entity_id. La solicitud no admite la cabecera If-Match, porque el material SAML no tiene versión. Las escrituras se auditan como connection.idp_metadata_imported, además de connection.idp_certificate_added por cada certificado nuevo.

Solicitud

Campo Tipo Obligatorio Descripción
connection_id ruta sí ID de la conexión SAML empresarial (conn_…).
metadata_xml cadena sí El documento de metadatos (EntityDescriptor o EntitiesDescriptor), de como máximo 1 MiB.
entity_id cadena para varias entidades El ID de entidad del proveedor de identidad que se tomará de un documento con varias entidades. Con una sola entidad debe coincidir.
mfa_authn_context_values array | null no Valores AuthnContextClassRef de SAML que el proveedor de identidad considera autenticación multifactor (como máximo 10). Cuando se indican (incluso una lista vacía) se almacenan; cuando se omiten o son null se conservan los valores almacenados.

Respuesta

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 Descripción
idp_entity_id, idp_sso_url, idp_slo_url La parte del proveedor de identidad después de la importación; idp_slo_url es null cuando el documento no tiene servicio de cierre de sesión único.
certificates Los certificados de firma activos de la conexión (consulte Listar certificados).
added_certificate_fingerprints Huellas SHA-256 de los certificados que añadió esta importación; los certificados ya registrados no aparecen.
revision Solo cuando la importación se convirtió en una revisión en borrador: el borrador (consulte Listar las revisiones).

Errores

HTTP code Cuándo
404 not_found La conexión no existe en este entorno o no es una conexión empresarial.
409 conflict La conexión no es una conexión SAML, todavía no tiene configuración SAML o la importación superaría 3 certificados activos (no se cambia nada).
422 validation_failed El documento o un campo no es válido; errors[] apunta al campo (/metadata_xml, /entity_id, /mfa_authn_context_values). En los entornos de staging y producción también se rechaza un proveedor de identidad de prueba en /metadata_xml: un ID de entidad bajo el dominio reservado .invalid, o la clave pública de prueba del servidor simulado local.
413 payload_too_large El cuerpo de la solicitud supera los 4 MiB.
400 unknown_field El cuerpo contiene un campo desconocido.
401 unauthenticated La credencial falta, no es válida o fue revocada.
403 insufficient_permissions La credencial no tiene el permiso necesario.
429 rate_limited Se superó el límite de frecuencia; reintente después del periodo indicado en Retry-After.
503 service_unavailable Una dependencia no está disponible temporalmente; reintente después del periodo indicado en Retry-After.

Ejemplo

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