¿Compartir sesión de inicio de sesión de un sitio web a otro?

4

Dadas dos compañías que administran dos sitios web separados, el cliente desea que el usuario pueda iniciar sesión en un sitio web y luego hacer clic en un enlace para navegar a una parte determinada del segundo sitio web. El cliente desea eliminar la necesidad de iniciar sesión por segunda vez al llegar al segundo sitio web.

Estoy pensando que la solución es

  1. En lugar de enlazar directamente con el segundo sitio web, enlace a una página de redireccionamiento dentro del primer sitio.
  2. La página de redireccionamiento generará una cadena aleatoria , y notificará al segundo sitio web cuál es la cadena aleatoria y para qué ID de usuario y dirección IP es.
  3. El usuario sería redirigido al segundo sitio web con la cadena aleatoria incluida en la URL.
  4. El segundo sitio web verificará la cadena aleatoria + IP + fecha / hora .
  5. Una vez validado, el segundo sitio web inicializará una sesión de inicio de sesión dando al usuario el acceso adecuado.

Las advertencias que conozco son

  • La seguridad del segundo sitio web se limita a la del primer sitio web.
  • Si el usuario cierra sesión en un sitio, no se cerrará automáticamente la sesión en otro.

Así que mi pregunta es

  1. ¿Es esta solución una buena, sería segura si se implementa correctamente?
  2. ¿Hay otra solución obvia / mejor que debería estar revisando?
  3. Por favor, avíseme si hay alguna otra advertencia que deba tener en cuenta, o cosas a tener en cuenta durante la implementación.
pregunta George Bailey 06.01.2014 - 15:45
fuente

1 respuesta

4

Usar algo como auth probablemente sería más fácil y seguro. El principal problema con esto es que no puede usar la contraseña de usuario para el cifrado a nivel de usuario, pero si el sitio no lo necesita, el usuario no está accediendo directamente, entonces está bien.

Tiene la idea básica correcta, en que desea que un servidor sea responsable del inicio de sesión y el otro que confíe en ese servidor, pero le sugiero que quiera un sistema que se base en una comunicación confiable entre los dos servidores. que una cadena para validar la sesión. Esa es básicamente la idea con oauth, donde un sistema tiene el otro sistema que procesa el inicio de sesión y devuelve una validación que el usuario autenticó. Puede ocultar el proceso auth porque el usuario ya ha iniciado sesión en el sitio que validará su identidad, por lo que podría hacerse entre bambalinas.

    
respondido por el AJ Henderson 06.01.2014 - 15:53
fuente

Lea otras preguntas en las etiquetas