Establecer el inicio de sesión iniciado por el IdP para una conexión SAML
PUT /v1/connections/{connection_id}/idp-initiated · permiso connections:write
Permite o desactiva el inicio de sesión iniciado por el IdP (una respuesta SAML no solicitada que se envía desde el portal de aplicaciones del proveedor de identidad) para una conexión SAML empresarial, y establece las aplicaciones a las que el usuario puede acceder. Está desactivado de forma predeterminada.
- Reemplazo completo: cada solicitud escribe los tres campos. Un
idp_initiated_default_application_idomitido y unidp_initiated_allowed_application_idsvacío se borran. - Destinos: cada aplicación debe existir en este entorno, iniciar sesión de los usuarios mediante un navegador (no de máquina a máquina, de gestión ni de cliente con documento de metadatos de ID de cliente) y tener un
initiate_login_uri. Después de iniciar sesión, el navegador se envía a esa dirección coniss, y la aplicación inicia su propia solicitud de autorización constatey PKCE. - RelayState: cuando el proveedor de identidad envía un RelayState, solo selecciona una aplicación si coincide byte a byte con el
client_idde esa aplicación y la aplicación es la predeterminada o está en la lista de permitidas. RelayState nunca se trata como una URL. - Seguridad: esta configuración acepta respuestas que sus usuarios no iniciaron, por lo que un usuario del panel necesita una autenticación de nivel superior reciente y el rol
owneroadmin. El Portal de administración no puede cambiarla.
Solicitud
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
connection_id |
ruta | sí | ID de la conexión SAML empresarial (conn_…). |
If-Match |
encabezado | no | El ETag de la conexión. Un valor desactualizado falla con 412. |
allow_idp_initiated |
booleano | sí | Acepta respuestas SAML no solicitadas. true requiere idp_initiated_default_application_id. |
idp_initiated_default_application_id |
string | null | cuando está habilitado | Aplicación (app_…) que se usa cuando el RelayState está vacío. |
idp_initiated_allowed_application_ids |
array | no | Aplicaciones (app_…) que un RelayState puede seleccionar; únicas, como máximo 20. |
Respuesta
200 OK con la conexión (véase Obtener una conexión) y su nuevo ETag. La conexión muestra los valores almacenados en allow_idp_initiated, idp_initiated_default_application_id y idp_initiated_allowed_application_ids.
Errores
| HTTP | código | Cuándo |
|---|---|---|
| 404 | not_found |
La conexión no existe en este entorno. |
| 412 | precondition_failed |
If-Match no coincide con la versión actual. |
| 422 | validation_failed |
La conexión no es una conexión SAML empresarial, falta la aplicación predeterminada cuando está habilitado, o una aplicación no cumple las reglas de destino; errors[] indica el campo. |
| 400 | unknown_field |
El cuerpo contiene un campo desconocido. |
| 401 | unauthenticated |
La credencial falta, no es válida o ha sido revocada. |
| 403 | insufficient_permissions |
La credencial no tiene el permiso requerido. |
| 403 | step_up_required |
Un usuario del panel no ha completado una autenticación de nivel superior reciente. |
| 429 | rate_limited |
Se superó el límite de solicitudes; reintente después del período indicado en Retry-After. |
| 503 | service_unavailable |
Una dependencia no está disponible temporalmente; reintente después del período indicado en Retry-After. |
Ejemplo
curl -X PUT "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/idp-initiated" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"allow_idp_initiated":true,"idp_initiated_default_application_id":"app_01j9xp6q0r1s5t7v9w1x3y5z7c","idp_initiated_allowed_application_ids":["app_01j9xp6q0r1s5t7v9w1x3y5z7c"]}'
keenauth connections idp-initiated put conn_01j9xp6q0r1s5t7v9w1x3y5z7b --data '{"allow_idp_initiated":false}'