¿Cómo resuelve SAML el problema de inicio de sesión único en varios dominios?

10

Digamos que tengo dos sitios web que viven en dominios separados, y sus proveedores de servicios hablan con el mismo proveedor de identidad en un tercer dominio. Me conecto al primer sitio web y me autentico, y ahora decido visitar el segundo sitio web. El segundo sitio web se comunica con el proveedor de identidad, por lo que no necesito volver a iniciar sesión para acceder a mi cuenta. ¿Cómo se logra esto usando SAML? ¿Es posible utilizar cookies en este caso?

    
pregunta Shurmajee 12.07.2013 - 02:00
fuente

3 respuestas

13

En realidad, puede ser una cookie, ya que no es necesario que esté asociada con el proveedor de servicios, solo con el proveedor de identidad. Todos los dos proveedores de servicios que van a hacer son realizar la solicitud de autenticación al proveedor de identidad, por lo que el proceso para un usuario no autenticado será el mismo para sp.example1.com que para sp.example2.com.

Sin embargo, cuando la primera solicitud se realiza desde sp.example1.com y el usuario se redirige a sso.example3.com, el usuario iniciará sesión en sso.example3.com y luego podrá configurar una cookie para sso.example3. com.

Luego, cuando el usuario visite sp.example2.com, también redirigirá al usuario no autenticado a sso.example3.com, pero esta vez, el navegador tendrá una cookie para enviar junto con la solicitud de la última vez que el usuario visitó sso.example3.com, aunque esa visita fue iniciada por un proveedor de servicios diferente.

Por lo tanto, la cookie de sso.example3.com puede identificar al usuario como ya autenticado, y el proveedor de identidad puede continuar con el proceso de emisión de una aserción para el usuario a sp.example2.com sin requerir que el usuario complete el inicio de sesión flujo de trabajo de nuevo.

    
respondido por el Xander 12.07.2013 - 03:47
fuente
4

Es posible el uso de cookies.

Las cookies no son más que pequeños datos (pares nombre-valor) que se almacenan en su navegador mediante la aplicación web con la que se está comunicando. Cada cookie tiene un dominio asociado y abc.com no puede acceder a una cookie que pertenece a example.com. Es importante tener en cuenta que cada vez que el navegador realiza una solicitud HTTP a un determinado dominio, todas las cookies asociadas con ese dominio también se envían junto con la solicitud al servidor.

En terminología SAML

Proveedor de identidad (IdP) : proporciona autenticación como un servicio

Proveedor de servicios (SP) : confía en IdP para la autenticación de sus usuarios

SSO usando SAML : digamos que hay dos servicios SP1 y SP2 que el usuario desea acceder.

  1. El usuario visita SP1 e intenta iniciar sesión. SP1 envía una solicitud de autenticación a IdP y el navegador del usuario se redirige a IdP, donde ingresa sus credenciales. Después de la autenticación exitosa, el usuario es redirigido nuevamente a SP1 e IdP envía un aserción al SP1 que contiene información de autenticación. Ahora el usuario está autenticado y puede usar los servicios de SP1. En este caso, la respuesta proveniente de IdP también contiene una cookie para identificar al usuario. Esta cookie se almacena en el navegador.

  2. Ahora el usuario abre otra pestaña en el navegador e intenta acceder al sitio web de SP2. Nuevamente, cuando intenta iniciar sesión, el navegador se redirige a IdP y, con esta redirección, también se envían las cookies establecidas por IdP. El IdP recibe la cookie y envía una aserción que redirige el navegador al SP2. El usuario ha iniciado sesión en SP2 sin necesidad de volver a ingresar sus credenciales.

respondido por el Shurmajee 12.07.2013 - 07:56
fuente
0

el desafío es la cookie de sesión, ya que sabemos que estableceremos una cookie de sesión o una cookie basada en el tiempo en el sitio web de SSO, pero como generalmente el usuario visita el sitio SP1 y SP2, tanto la cookie de sesión como la cookie de tiempo caducarán durante la visita . ¿Cómo mantenemos el estado de inicio de sesión? intente llamar ajax al sitio web de SSO en el backend? Esa es la única manera en que puedo pensar.

    
respondido por el Cyokin zhang 29.10.2016 - 07:01
fuente

Lea otras preguntas en las etiquetas