symfony single-sign-on

Implementando un inicio de sesión único de Symfony2



single-sign-on (1)

Para obtener un SSO multidominio puede implementar una solución SAML. Eche un vistazo al software simpleamlphp y en esta extensión para symfony1 https://github.com/chtitux/sfSAMLPlugin

Para resolver el problema de OTP, puede usar, por ejemplo, LinOTP2 witch es compatible con simplesamlphp: https://github.com/lsexperts/simplesamlphp-linotp

Tengo una comprensión básica del concepto de seguridad en Symfony2. Ahora estoy tratando de implementar una función de inicio de sesión único para un sitio web de varios dominios.

El concepto de SSO en sí es bastante sencillo:

  • El dominio A es el dominio de la cookie; La gente puede iniciar sesión en este dominio.
  • Al iniciar sesión en el dominio B, el usuario se redirige al dominio A, donde se solicita una contraseña de un solo uso . El usuario necesita una sesión en el dominio A para obtener esta contraseña.
  • Después de obtener la OTP, el usuario regresa al dominio B, que coincidirá con la OTP con la sesión en el dominio A.
  • Si concuerda, se creará una sesión para el dominio B. La sesión se validará en comparación con la sesión en el dominio A para cada solicitud posterior a partir de este momento.

La implementación del firewall / autenticación para el dominio A se puede hacer como lo haría normalmente. En mi entendimiento, necesito:

  • Configurar un cortafuegos para el dominio B
  • Cree un escucha para este firewall, que de alguna manera redirige al usuario al dominio A (más específico: un uri que solicita un OTP)
  • Cree un proveedor de autenticación que maneje una OTP y cree una sesión para el dominio B
  • Cree otro oyente que verifique la validez de la sesión en comparación con la sesión en el dominio A

Sin embargo, realmente podría usar algunos consejos sobre cómo hacer esto en un paquete. Si alguien me puede ayudar aquí, sería genial.

Además, aún no estoy seguro de cómo implementar la OTP o cómo comparar las dos sesiones, y me aseguro de que ambas sean válidas. Eso vendrá después, necesito que este flujo de trabajo funcione primero.