Uno de nuestros clientes solicita que implementemos el Cierre de sesión único (SLO) a través de SAML. Su lado del servicio SAML es el Proveedor de identidad, mientras que el nuestro es el Proveedor de servicios. El inicio de sesión único (SSO) funciona validando las credenciales del usuario con el IdP del cliente, luego redirigiendo al usuario a una página de inicio de sesión en otra plataforma, con un token que les permite iniciar sesión directamente. Esa plataforma no sabe absolutamente nada sobre SAML, y particular no comparte el estado de sesión SimpleSAMLphp.¿Hay un buen ejemplo SimpleSAMLphp SLO?
Cerrar sesión tiene que ocurrir de dos maneras, sin embargo:
Si el usuario pulsa el botón de cierre de sesión en nuestra plataforma, deberá iniciar sesión a salir de nuestro sitio, y pulsa el servicio SLO del IdP.
Si el usuario presiona el botón Cerrar sesión del lado del cliente o del otro proveedor de servicios, el IdP del cliente golpeará el servicio SLO de nuestro SP, que luego debe cerrar la sesión de nuestra plataforma real antes de redireccionar al usuario a la página de respuesta de cierre de sesión del SP.
soy capaz de convencer a nuestra plataforma para redirigir al usuario a una página cualquiera de cierre de sesión, así que creo que la primera parte se puede lograr mediante una página que utiliza SimpleSAML_Auth_Simple::getLogoutURL()
.
Dicha página también puede funcionar cuando se golpea desde el lado de IdP, pero las especificaciones de SAML son lo suficientemente complicadas como para no estar seguro hasta que lo intentemos. Sin embargo, la configuración SP en config/authsources.php
no acepta un parámetro SingleLogoutService
; los metadatos producidos por /www/module.php/saml/sp/metadata.php/entityid
aún muestran /www/module.php/saml/sp/saml2-logout.php/entityid
como la ubicación de SingleLogoutService. Si esa página es necesaria para borrar la sesión de SimpleSAMLphp, está bien, pero necesito saber cómo introducir los redireccionamientos adicionales necesarios para desconectar al usuario de nuestra plataforma.
He intentado buscar ejemplos, pero todo lo que obtengo son referencias de la API. También sería bueno saber cómo puedo probar el cierre de sesión sin intentar configurar mi propio IdP; ¿Hay un servicio como el openidp.feide.no
que maneja SLO además de SSO?
Eche un vistazo a [Shibboleth] (http://shibboleth.internet2.edu/). –
@JaredFarrish: El software allí parece estar basado en Java, donde se nos ha pedido usar PHP para pasas histéricas. Si te refieres al protocolo, es dictado por el cliente; los dos están relacionados, pero no estoy del todo seguro de que sean completamente compatibles. Ya fue bastante difícil convencer a un verdadero paquete de SAML para hablar con el servicio del cliente. – eswald