mvc formsauthentication asp.net forms-authentication

asp.net - formsauthentication - authentication mode forms web config



Asp.net forma autenticación y múltiples dominios (3)

Debería leer Explained: Autenticación de formularios en MSDN. Cubren la autenticación de dominios cruzados.

Tengo dos dominios, domain1.com y domain2.com que apuntan al mismo sitio web asp.net que utiliza la compilación de asp.net en la autenticación de formularios. El problema es que incluso si los dominios apuntan al mismo sitio web, el usuario solo se autentica para un dominio a la vez. Entonces, si usa www.domain1.com primero y luego visita www.domain2.com, es el mismo sitio web en la parte posterior, pero solo está autenticado para www.domain1.com. Lo mismo sucede si usa www y no www cuando visita los sitios.

Esto es lo que uso para iniciar sesión:

FormsAuthentication.RedirectFromLoginPage(username, cookie.Checked);

Para verificar el inicio de sesión:

User.Identity.IsAuthenticated

¿Cómo puedo hacer que el usuario se autentique para todos los dominios que apuntan al mismo sitio web?


Lo que está buscando es una solución de inicio de sesión único.

Como la autenticación ASP.NET está en su corazón generalmente basada en cookies, hay dos cosas a tener en cuenta:

  1. Establece tus cookies correctamente
  2. Rebote a sus usuarios al dominio alternativo durante el registro.

Mirando ambos con más profundidad:

1. Establecer cookies correctamente

Debe asegurarse de que ASP.NET está escribiendo las cookies del ticket de autenticación en el dominio raíz, en lugar del dominio explícito, esto se hace usando el atributo de domain del elemento forms:

<forms name="name" loginUrl="URL" defaultUrl="URL" domain=".example.com"> </forms>

Debes configurar tu dominio en ".example.com"; ten en cuenta el período principal: esta es la clave. De esta forma, las solicitudes a example.com y www.example.com leerán la cookie correctamente y autenticarán al usuario.

2. Rebote a los usuarios al dominio alternativo

Lo que hemos implementado en algunos sitios que usan un inicio de sesión único es un proceso de inicio de sesión de ida y vuelta. El usuario se autentica en el primer dominio, encriptamos los detalles de inicio de sesión y los redirigimos a una página conocida en el segundo dominio, los registramos allí y luego los redirigimos nuevamente al servidor original.

Esta redirección del lado del cliente es importante: las cookies solo se escriben cuando hay una respuesta para el cliente, y el navegador debe visitar el segundo dominio para ver realmente las cookies.

Otros detalles a considerar en este tipo de configuración:

  1. Es probable que desee agotar el tiempo de espera en los detalles de inicio de sesión cifrados, de modo que al recuperar esa URL del historial del navegador no se inicie sesión automáticamente.
  2. Si los dominios están en servidores diferentes, deberá asegurarse de que las claves de la máquina estén configuradas de la misma manera, de manera que pueda encriptar y descifrar los detalles correctamente o usar alguna otra clave compartida.
  3. Es probable que desee tener un mecanismo en su lugar para recuperar los usuarios ReturnUrl del servidor original para que pueda enviarlos de vuelta al lugar correcto.

También puede consultar "Autenticación de formularios en todas las aplicaciones"