Soporte de SAML 2.0
SAML 2.0 es una versión del standard SAML para intercambiar identidades entre dominios seguros. SAML 2.0 es un protocolo basado en XML que usa tokens de seguridad que contienen aserciones para enviar información desde el IdP al SP.
En la imagen se observa los pasos que se producen normalmente para el login:
- El usuario accede a una aplicación desde el navegador(que se lo conoce como Service Provider o SP)
- El SP redirige hacia el IdP con un token SAML para autenticarse
- El IdP vailda el token SAML y como no existe, lo redirige al usuario a un formulario donde ingresar sus credenciales
- El Idp redirige al usuario al SP con el nuevo token SAML
- El SP regresa al usuario con los resultados del acceso al recurso (la página web)
Una vez que el usuario tenga un token SAML válido podrá:
- Ingresar a cualquier aplicación o SP registrada en la plataforma SIU-Araí, sin pasar por el login. Este intento de acceso tomará el token SAML, lo validará y si está vigente simplemente el usuario tendrá acceso instantaneo a dicho SP.
- Al cerrar sesión por acción del usuario o por expiración del tiempo de duración, se invalida el token SAML en el IdP. Sucesivos intentos de ingreso con dicho token provocará que nos envíe al usuario a la página de login.
Implementación de SAML 2.0 en Araí-Usuarios
La implementación del estandar SAML 2.0 se hace utilizando la librería SimpleSAMLphp.
SimpleSAMLphp is an award-winning application written in native PHP that deals with authentication. The project is led by UNINETT, has a large user base, a helpful user community and a large set of external contributors.
Esta librería tiene muchos años y se ha ganado un nombre en la comunidad. Más allá de esto, la librería sigue siendo desarrollada activamente.
Las fuentes de autenticación provistas a SimpleSAMLPhp fueron implementadas cómo un módulo de esta librería y se puede acceder y modificar toda la configuración de la misma.
Configuración SimpleSAMLPhp
La configuración de SimpleSAMLPhp se encuentra en el directorio idp/config/simplesamlphp
. Ahí están los archivos básicos de configuración de esta librería.
.
├── authsources.php
├── certificado_idp.crt
├── certificado_idp.key
├── config.php
├── moduloe_oidc.php
├── oidc_module.crt
├── oidc_module.pem
├── saml20-idp-hosted.php
└── saml20-sp-remote.php
Se puede consultar detalles sobre la configuración en este sitio: https://simplesamlphp.org/docs/stable/simplesamlphp-idp