2012-02-15 17 views
6

Tengo varias aplicaciones web ejecutándose en un servidor Windows 2003 con IIS 6.0.La autenticación basada en formularios no funciona entre .NET 2.0 y la aplicación .Net 4.0

Las aplicaciones se ejecutan en Asp.net 2.0.

Recientemente he instalado una aplicación web MVC 3 que está basada en la naturaleza asp.net 4. El ticket de formularios no se reconoce en esta nueva aplicación.

que tienen la misma configuración machineKey en los archivos machine.config de las diferentes versiones de ASP.NET que se han creado usando este enlace: http://aspnetresources.com/tools/machineKey

La configuración de inicio de sesión en la aplicación web es la siguiente:

<authentication mode="Forms"> 
    <forms name=".WEBAUTH" 
     loginUrl="login.aspx" 
     protection="None" 
     slidingExpiration="true" 
     enableCrossAppRedirects="false"  
     timeout="43200"  
     path="/" /> 
    </authentication> 

Y de acuerdo con la configuración de la aplicación MVC es:

<authentication mode="Forms"> 
    <forms name=".WEBAUTH" 
     loginUrl="http://path2theloginapp/login.aspx" 
     protection="None" 
     slidingExpiration="true" 
     enableCrossAppRedirects="false"  
     timeout="43200"  
     path="/" /> 
    </authentication> 

    <authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
    </authorization> 

los trabajos de inicio de sesión, pero la aplicación MVC siempre r edirects de vuelta a la página de inicio de sesión.

Ahora, si cambio la versión asp.net de la aplicación web de inicio de sesión en la configuración de IIS a asp.net 4.0, funciona. Pero entonces todas las demás aplicaciones que se ejecutan en asp.net 2 ya no funcionan.

¿Alguien ha resuelto la autenticación basada en formularios en una situación similar?

Respuesta

5

tuve que ir por el camino largo y abrió una caso de soporte con Microsoft.

Al final resultó que, las actualizaciones de seguridad desde el Microsoft Security Bulletin MS11-100 faltaban:

http://technet.microsoft.com/en-us/security/bulletin/ms11-100.
Elija su sistema operativo e instale las actualizaciones para .Net 2.0 y 4.0.

Esto actualiza la autenticación fija basada en formularios sin la reconfiguración de las aplicaciones web involucradas.

+0

¡Muchas gracias! –

2

Es uno de los breaking changes en ASP.NET 4.0:

defecto algoritmo de hash es ahora HMACSHA256

ASP.NET utiliza el cifrado y algoritmos hash para ayudar a proteger los datos como las cookies de autenticación de formularios y ver el estado. De forma predeterminada, ASP.NET 4 ahora usa el algoritmo HMACSHA256 para las operaciones de hash en las cookies y el estado de vista. Las versiones anteriores de ASP.NET utilizaban el antiguo algoritmo HMACSHA1 .

Sus aplicaciones pueden verse afectadas si ejecuta entornos mixtos ASP.NET 2.0/ASP.NET 4 donde los datos como las cookies de autenticación de formularios deben funcionar en las versiones de .NET Framework. Para configurar una aplicación Web 4 ASP.NET para utilizar el algoritmo HMACSHA1 mayores, agregue la siguiente configuración en el archivo Web.config:

<machineKey validation="SHA1" />

+0

La validación se establece como lo recomienda en machine.config.¿Podría funcionar, si dejo que la aplicación web y el grupo de aplicaciones se ejecuten en el modo asp.net 2.0? – ms007

+0

@ MS007, no, no puede tener una aplicación ASP.NET MVC 3 ejecutándose bajo CLR 2.0. Requiere .NET 4.0. Por otro lado, puede hacer que su aplicación heredada se ejecute en .NET 4.0. –

Cuestiones relacionadas