.net IIS6&;IIS7形成身份验证兼容性
背景: 我有两个web应用程序,安装在不同的web服务器上,目前都是IIS6。应用程序1(A1-A1.domain.com)使用应用程序2(A2-A2.domain.com)设置的表单验证cookie 在A1 web.config中,我有:.net IIS6&;IIS7形成身份验证兼容性,.net,iis,forms-authentication,.net,Iis,Forms Authentication,背景: 我有两个web应用程序,安装在不同的web服务器上,目前都是IIS6。应用程序1(A1-A1.domain.com)使用应用程序2(A2-A2.domain.com)设置的表单验证cookie 在A1 web.config中,我有: <authentication mode="Forms"> <forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="http://a2
<authentication mode="Forms">
<forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="http://a2.domain.com/login.aspx" timeout="60" />
</authentication>
<authentication mode="Forms">
<forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="login.aspx" timeout="60" />
</authentication>
在A2 web.config中,我有:
<authentication mode="Forms">
<forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="http://a2.domain.com/login.aspx" timeout="60" />
</authentication>
<authentication mode="Forms">
<forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="login.aspx" timeout="60" />
</authentication>
这两个应用程序还在web.config中共享machineKey值
这项功能运行完美,没有任何问题。
问题:
我正在升级A1以使用.NET4.0并在IIS7中运行,现在共享表单身份验证不起作用。我仍然被重定向到A2上的正确登录页面,我可以看到它设置了身份验证cookie,但当我返回A1时,身份验证失败,出现以下错误(来自事件查看器):
表单对请求的身份验证失败。原因:提供的票证无效
我试过:
- 在IIS6中设置A1的升级版本(这起到了作用-因此IIS6中不同.NET版本的表单验证之间没有兼容性问题)
- 使用本地登录页面在IIS7中设置升级的A1,即将登录页面从A2复制到A1,并设置A1 loginUrl=“login.aspx”(也适用)
有人知道如何解决这个问题吗?在.NET 4.0中,身份验证票据的加密方式已经改变。如果希望与旧版本兼容,可以如下设置
ticketCompatibilityMode
属性:
<forms
loginUrl="/Login.aspx"
timeout="2880"
ticketCompatibilityMode="Framework20"
domain="domain.com"
/>
谢谢,但不幸的是,这不起作用。我认为我没有看到2.0和4.0之间存在任何兼容性问题,因为我已经在IIS6中的A1与A2设置在同一台服务器上(但使用不同版本的.NET),并发现这是可行的。它唯一不起作用的时间是它跨两台服务器时,一台使用IIS6,另一台使用IIS7,无论.NET版本如何。身份验证cookie不是由IIS创建的,而是由ASP.NET创建的。所以这可能不起作用的原因要么是因为你没有相同的机器钥匙,.NET 4.0中的ticketCompatibilityMode
,最后是Microsoft发布的关于ASP.NET中Oracle Padding漏洞的最新修补程序:如果只在一台服务器上安装,而不在另一台服务器上安装,则可能会造成问题。在我的本地计算机上安装安全修补程序似乎成功了。阅读有关ticketCompatibilityMode的信息,这似乎会对cookie过期时间产生影响,所以我也会将其保留在那里。谢谢你,达林!