2012-02-15 58 views
6

我有几个Web应用程序在运行IIS 6.0的Windows Server 2003上运行。基于表单的身份验证无法在.Net 2.0和.Net 4.0应用程序之间工作

应用程序在Asp.net 2.0下运行。

最近我安装了一个MVC 3 Web应用程序,它在自然界基于asp.net 4。表格票据不会在这个新应用程序中重新识别。

我有已使用此链接创建不同的asp.net版本的machine.config中的文件相同的machineKey设置:http://aspnetresources.com/tools/machineKey

在登录Web应用程序的配置是这样的:

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

和MVC应用程序的相应配置为:

<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> 

登录工作,但MVC应用程序始终为R编辑回到登录页面。

现在如果我将IIS配置中的登录Web应用程序的asp.net版本更改为asp.net 4.0,它将起作用。但是,在asp.net 2上运行的所有其他应用程序不再适用。

有没有人在类似的情况下解决了基于表单的身份验证?

回答

5

我不得不去很长的路开了一家支持微软的案例。

事实证明,从Microsoft安全公告MS11-100相关的安全更新失踪:

http://technet.microsoft.com/en-us/security/bulletin/ms11-100
选择您的操作系统并安装.Net 2.0和4.0的更新。

此更新固定基于表单的身份验证,而不涉及Web应用程序的重新配置。

+0

非常感谢你! – 2012-07-13 14:37:16

2

这是一个中breaking changes ASP.NET 4.0:

默认哈希算法现在HMACSHA256

ASP.NET使用加密和散列算法,以帮助安全 数据,如表单身份验证cookie并查看状态。默认情况下, ASP.NET 4现在使用HMACSHA256算法对 cookie进行哈希运算并查看状态。早期版本的ASP.NET使用较早的 HMACSHA1算法。

如果运行的混合ASP.NET 2.0/ASP.NET 4环境中,表单身份验证Cookie等数据必须跨.NET Framework版本运行,则您的应用程序可能会受到影响。要配置使用旧HMACSHA1算法的 ASP.NET 4 Web应用程序,添加 以下设置在Web.config文件:

<machineKey validation="SHA1" />

+0

验证按照您在machine.config中的建议设置。难道工作,如果我让在asp.net 2.0模式下运行的Web应用程序和应用程序池? – ms007 2012-02-15 17:29:14

+0

@ MS007,不,您不能在CLR 2.0下运行ASP.NET MVC 3应用程序。它需要.NET 4.0。另一方面,你可以让你的遗留应用程序在.NET 4.0下运行。 – 2012-02-15 17:39:09

相关问题