2009-02-19 21 views
8

Leo que una página que se ejecuta bajo una conexión https no puede compartir una sesión InProc (basada en cookies) con otra página (o la misma para ese asunto) que se ejecuta bajo http regular Mi sitio se ejecuta en Server 2003, IIS 6 y .Net 2.0.cómo puedo compartir una sesión asp.net entre http y https

Después de algunos experimentos, parece que una página que almacena datos en sesión mientras se está conectado a través de https CAN accede posteriormente a los datos, incluso si se ejecuta en http plano.

Entonces, ¿es posible o debo revisar y buscar fallas en la configuración de SSL?

Respuesta

15

De MSDN:

Cuando un usuario se mueve hacia atrás y hacia adelante entre seguro y las zonas comunes, el generada ASP.NET-cookie de sesión (o URL si ha habilitado estado sesión sin cookies) se mueve con ellos en texto plano, pero la cookie de autenticación nunca se pasa por conexiones HTTP no cifradas como larga como la propiedad de cookie segura se establece.

Así que, básicamente, la cookie se puede pasar a través de HTTP y HTTPS si la propiedad se establece en Securefalse.

he evitado este problema agregando esto a mi archivo Global.asax:

void Session_Start(object sender, EventArgs e) 
{ 
    if (Request.IsSecureConnection) Response.Cookies["ASP.NET_SessionID"].Secure = false; 
} 

Esto significa que si se crea la cookie de sesión a través de HTTP, que sólo será accesible a través de HTTPS.

+0

¿Cuáles son las implicaciones de seguridad para apagar esto? –

1

Al buscar el problema no aparece mucha charla al respecto hasta ahora, sigue buscando.

Editar: bien encontrar algunas cosas ahora.

Derecho parece que funcionará bien si ambos conjuntos de páginas están en la misma aplicación/sitio web.

Así que continuaré y me sentiré tranquilo.

5

IIS establecer En la ventana de propiedades de IIS, en la pestaña ASP -> Propiedades de la sesión, hay un escenario de “Nueva identificación de conexiones seguras”

me fijo este problema intermitente por mí mismo mediante el establecimiento de esta a falso

+0

Esto parece haber desaparecido en IIS7, o quizás no tengo claro dónde se encontraría. ¿Esto es por sitio o global para el servidor? –

+1

@ chris-moschini En IIS 7 hay un ícono de "estado de sesión" debajo de "ASP.NET", por lo que si está buscando, está en el lugar correcto, y sí, está en lo cierto; esa configuración se ha ido. –

1

Si alguna de las soluciones anteriores no funciona, intente esto. He descifrado esto después de investigar un par de días.

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    ... 
    ... 
    CookieSecure = CookieSecureOption.Never 
}); 
Cuestiones relacionadas