基于表单的身份验证在 .Net 2.0 和 .Net 4.0 应用程序之间不起作用

发布于 2025-01-06 10:19:00 字数 1325 浏览 0 评论 0 原文

我有几个 Web 应用程序在带有 IIS 6.0 的 Windows Server 2003 上运行。

这些应用程序在 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应用程序始终重定向回登录页。

现在,如果我将 IIS 配置中登录 Web 应用程序的 asp.net 版本更改为 asp.net 4.0,它就可以工作。但随后在 ASP.NET 2 上运行的所有其他应用程序都不再起作用。

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

I have several web applications running on an Windows Server 2003 with IIS 6.0.

The applications are running under Asp.net 2.0.

Recently I have installed a MVC 3 Web application which is in it's nature asp.net 4 based. The forms ticket is not recocnized in this new application.

I have the same machineKey settings in the machine.config files of the different asp.net versions that have been created using this link: http://aspnetresources.com/tools/machineKey

The configuration in the login web application is like this:

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

And accordingly the configuration of the mvc app is:

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

The login works, but the mvc application always redirects back to the login page.

Now if i change the asp.net Version of the login web application in IIS configuration to asp.net 4.0, it works. But then all the other applications running on asp.net 2 no more works.

Has anybody solved formsbased authentication in a similar situation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苏大泽ㄣ 2025-01-13 10:19:00

我不得不走很长的路,向微软提出了支持案例。

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

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

这更新了固定的基于表单的身份验证,而无需重新配置所涉及的 Web 应用程序。

I had to go the long way and opened a support case with Microsoft.

As it turned out, the relevant security updates from Microsoft Security Bulletin MS11-100 were missing:

http://technet.microsoft.com/en-us/security/bulletin/ms11-100.
Choose your operatingsystem and install the updates for .Net 2.0 and 4.0.

This updates fixed forms-based authentication without reconfiguration of the involved web applications.

和影子一齐双人舞 2025-01-13 10:19:00

这是 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 版本工作。要配置一个
ASP.NET 4 Web 应用程序要使用较旧的 HMACSHA1 算法,请添加
Web.config 文件中的以下设置:

It's one of the breaking changes in ASP.NET 4.0:

Default Hashing Algorithm Is Now HMACSHA256

ASP.NET uses both encryption and hashing algorithms to help secure
data such as forms authentication cookies and view state. By default,
ASP.NET 4 now uses the HMACSHA256 algorithm for hash operations on
cookies and view state. Earlier versions of ASP.NET used the older
HMACSHA1 algorithm.

Your applications might be affected if you run mixed ASP.NET
2.0/ASP.NET 4 environments where data such as forms authentication cookies must work across.NET Framework versions. To configure an
ASP.NET 4 Web application to use the older HMACSHA1 algorithm, add the
following setting in the Web.config file:

<machineKey validation="SHA1" />

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文