10

Conozco el riesgo de seguridad asociado y lo he planteado con el negocio, pero quieren tener sus 5 dominios para compartir la cookie de inicio de sesión.Cookies de Cross Domain con FormsAuthentication

Estamos utilizando y no tenemos ningún plan para dejar de utilizar la membresía y los perfiles de ASP.NET. es posible? Un truco incluso sería muy apreciado.

Respuesta

9

No es posible con la caja ASP.NET.

La autenticación basada en formularios se basa en una cookie y las cookies solo se pueden establecer en un dominio específico.

Si desea la autenticación compartida de dominio cruzado (no subdominios), necesita una solución de inicio de sesión único.

He hecho mi propia versión y es relativamente simple. El principio básico es que tiene un dominio maestro que contiene su cookie de autenticación (ticket). A continuación, redirige a ese dominio desde todos los demás dominios. No es realmente bonito, pero el evento Microsoft Passport funcionó de esa manera.

puede encontrar una gran cantidad de ejemplos en la red, echar un vistazo a estos dos enlaces:

Authentication cookies

Cross domain authentication

+0

En ese segundo enlace, si tiene problemas para ejecutar la demo porque "Clave no válida para su uso en estado", intente lo siguiente: Asegúrese de que el archivo de clave en realidad se está creando donde crees que está. Parece que el código de ejemplo incluye un archivo de clave, pero por supuesto queremos hacer el nuestro. Para guardar el archivo de clave (tripleDES.key), primero tuve que guardar la configuración en la herramienta de configuración de la biblioteca de Enterprise (clic derecho, guardar). Una vez que guardé la configuración, mi archivo de clave también se guardó inmediatamente, y puedo ejecutar la aplicación de demostración. – northben

2

No sólo con ASP.Net es que esto no es posible, pero no en absoluto. Las cookies son siempre específicas del dominio; ningún navegador comercial funcionará de otra manera. Esto es por diseño y muy necesario para evitar el abuso generalizado de las cookies. Muerte te indicó la dirección correcta (inicio de sesión único).

4

Usted puede configurar todos estos dominios como subdominios para su empresa:

www.company.com 
shop.company.com 
sales.company.com 
research.company.com 
.. 

entonces usted será capaz de establecer cookie en el dominio principal y será visible para todos los subdominios.

var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); 
cookie.Domain = ".company.com"; 
Repsonse.Cookies.Add(cookie); 

Saludos, Max Chernyshov http://prontocoder.com

Cuestiones relacionadas