14 Configuración de SAML con OneLogin
Descripción general
Esta sección proporciona directrices para configurar el inicio de sesión único y el aprovisionamiento de usuarios en Zabbix desde OneLogin utilizando la autenticación SAML 2.0.
Configuración de OneLogin
Creación de la aplicación
1. Inicie sesión en su cuenta en OneLogin. Para fines de prueba, puede crear una cuenta gratuita de desarrollador en OneLogin.
2. En la interfaz web de OneLogin, vaya a Applications → Applications.
3. Haga clic en "Add App" y busque la aplicación adecuada. Las directrices de esta página se basan en el ejemplo de la aplicación SCIM Provisioner with SAML (SCIM v2 Enterprise, full SAML).
4. Para empezar, es posible que desee personalizar el nombre para mostrar de su aplicación. También puede querer añadir el icono y los detalles de la aplicación. Después de eso, haga clic en Save.
Configuración de SSO/SCIM provisioning
1. En Configuration -> Application details, establezca el endpoint de inicio de sesión único de Zabbix http://<zabbix-instance-url>/zabbix/index_sso.php?acs como valor de estos campos:
- ACS (Consumer) URL Validator
- ACS (Consumer) URL
Tenga en cuenta el uso de "http" y no de "https", para que el parámetro acs no se elimine de la solicitud.

También es posible usar "https".
Para que funcione con Zabbix, es necesario añadir a conf/zabbix.conf.php la siguiente línea:
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
Deje las demás opciones con sus valores predeterminados.
2. En Configuration -> API connection, establezca los siguientes valores:
- SCIM Base URL:
https://<zabbix-instance-url>/zabbix/api_scim.php - SCIM JSON Template: debe contener todos los atributos personalizados que desee pasar a Zabbix mediante SCIM, como
user_name,user_lastname,user_emailyuser_mobile:
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"userName": "{$parameters.scimusername}",
"name": {
"familyName": "{$user.lastname}",
"givenName": "{$user.firstname}"
},
"user_name": "{$user.firstname}",
"user_lastname": "{$user.lastname}",
"user_mobile": "{$user.phone}",
"user_email": "{$user.email}"
}
Los nombres de los atributos son arbitrarios. Se pueden usar nombres de atributos diferentes; sin embargo, es necesario que coincidan con el valor del campo correspondiente en la configuración SAML de Zabbix.
Tenga en cuenta que, para que el aprovisionamiento de usuarios funcione, OneLogin necesita recibir en la respuesta un atributo 'name' con 'givenName' y 'familyName', aunque no fuera requerido por el proveedor de servicios. Por lo tanto, es necesario especificarlo en el esquema, en la parte de configuración de la aplicación.
- SCIM Bearer Token: introduzca un token de la API de Zabbix con permisos de Super admin.
Haga clic en Enable para activar la conexión.

3. En la página Provisioning, habilite la opción Provisioning:

4. La página Parameters contiene una lista de parámetros predeterminados:
- Asegúrese de que 'scimusername' coincida con el valor de inicio de sesión del usuario en OneLogin (por ejemplo, el correo electrónico);
- Marque la opción Include in User Provisioning para el parámetro 'Groups';
- Haga clic en "+" para crear los parámetros personalizados que se requieren para las aserciones SAML y el aprovisionamiento de usuarios, como
user_name,user_lastname,user_emailyuser_mobile:

Al añadir un parámetro, asegúrese de marcar tanto Include in SAML assertion como Include in User Provisioning.
- Añada un parámetro 'group' que coincida con los roles de usuario en OneLogin.
Los roles de usuario se enviarán como una cadena, separada por un punto y coma
;. Los roles de usuario de OneLogin se utilizarán para crear grupos de usuarios en Zabbix:

Verifique la lista de parámetros:

5. En la página Rules, cree asignaciones de roles de usuario al parámetro Groups predeterminado.

Puede usar una expresión regular para pasar roles específicos como grupos.
Los nombres de los roles no deben contener ;, ya que OneLogin lo usa como separador al enviar un atributo con varios roles.
6. Descargue el certificado del IdP. Asigne permisos 644 ejecutando:
chmod 644 idp.crt
Configuración de Zabbix
1. En Zabbix, vaya a SAML settings y complete las opciones de configuración según la configuración de OneLogin:

| Zabbix field | Setup field in OneLogin | Sample value |
|---|---|---|
| IdP entity ID | Issuer URL (see SSO tab of your application in OneLogin) |
|
| SSO service URL | SAML 2.0 Endpoint (HTTP) (see SSO tab of your application in OneLogin) |
|
| SLO service URL | SLO Endpoint (HTTP) (see SSO tab of your application in OneLogin) |
|
| Username attribute | Custom parameter | user_email |
| Group name attribute | Custom parameter | group |
| User name attribute | Custom parameter | user_name |
| User last name attribute | Custom parameter | user_lastname |
También es necesario configurar el mapeo de grupos de usuarios. El mapeo de medios es opcional. Haga clic en Update para guardar estos ajustes.
2. Añada el certificado Base64 proporcionado por OneLogin.
Si en zabbix.conf.php está configurado $SSO['CERT_STORAGE'] = 'database', puede pegar el texto del certificado o cargar el archivo del certificado en el frontend durante la configuración de SAML; no se requieren archivos en el sistema de archivos.
Si en zabbix.conf.php está configurado $SSO['CERT_STORAGE'] = 'file', el certificado debe estar disponible en el sistema de archivos (de forma predeterminada en ui/conf/certs o en la ruta configurada en zabbix.conf.php) y el frontend no almacenará certificados en la base de datos.
Tenga en cuenta que si $SSO['CERT_STORAGE'] no está configurado o está comentado, se asume el almacenamiento en archivos y los certificados se leen desde ui/conf/certs.
Puede acceder a la descarga del certificado en OneLogin en Applications -> SSO -> haga clic en View details debajo del certificado actual.
3. Haga clic en el botón Update para guardar estos ajustes.
Aprovisionamiento de usuarios SCIM
Con el aprovisionamiento de usuarios habilitado, ahora es posible agregar/actualizar usuarios y sus roles en OneLogin y que se aprovisionen inmediatamente en Zabbix.
Por ejemplo, puede crear un nuevo usuario:

Agréguele un rol de usuario y la aplicación que aprovisionará al usuario:

Al guardar el usuario, se aprovisionará en Zabbix. En Aplicación -> Usuarios puede comprobar el estado de aprovisionamiento de los usuarios actuales de la aplicación:

Si se aprovisiona correctamente, el usuario puede verse en la lista de usuarios de Zabbix.
