摘要

安全更新 2638420(参见安全公告 MS11-100)将更改 ASP.NET 创建 Forms 身份验证票证的方式。此新行为与之前的行为不兼容。使用旧行为的服务器无法读取使用新行为生成的票证,反之亦然。因此,如果您使用采用 Forms 身份验证的应用程序,则在部署安全更新 2638420 时必须执行特定步骤,以确保所有服务器同时使用新行为。

部署指南

由于票证行为发生更改,其应用程序使用 Forms 身份验证的管理员在部署安全更新 2638420 时,必须执行特定步骤以确保所有服务器同时切换至新行为。若要确定您的应用程序是否使用 Forms 身份验证,请检查 System.web 文件。使用 Forms 身份验证的应用程序会在 System.web 文件中使用以下条目:

<authentication mode="Forms">备注

  • 默认身份验证模式是“Windows”。

  • ASP.NET 仅在明确配置的情况下才会使用 Forms 身份验证。

如果您使用采用 Forms 身份验证的应用程序,您必须使用以下方法之一部署安全更新 2638420,以确保您的网站能继续正常运行。方法 1将安全更新 2638420 同时部署到 ASP.NET Web 场中的所有活动服务器。为此,请按照下列步骤操作:

  1. 从负载平衡器旋转移除 Web 场中的一半服务器。

  2. 在这些服务器上安装更新。

  3. 将这些服务器重新添加至旋转,同时将剩余服务器设置为脱机状态,从而进行更新。

方法 2如果无法将安全更新 2638420 同时部署到 Web 场中的所有服务器,请改为使用此方法。注意 我们建议您不要使用此方法。设置此开关时,您可以将安全更新安装在 Web 场中的部分服务器上,然后使用旧行为继续运行。但是,使用此配置开关的服务器将会处于不安全状态,且不会实现安全更新中的所有修复。因此,应在将安全更新 2638420 部署到 Web 场中的所有服务器后尽快删除此配置开关,以便启用新的安全行为。安装安全更新 2638420 之前,在 Web.config 或 Machine.config 文件中设置兼容开关,以便在安装更新时强制旧行为。为此,请按照下列步骤操作:

  1. 使用文本编辑器(如 Notepad)打开 Web.config 文件或 Machine.config 文件。

  2. 将以下文本添加至文件,然后保存该文件:

    <appSettings><add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" /></appSettings>更新并保存 Web.config 或 Machine.config 文件后,无需重新启动计算机或任何服务。配置更改通知将自动循环应用程序池。

您可以在以下位置找到 Web.config 文件:.NET Framework 版本 4.0 至 4.5

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Web.configC:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Web.config .NET Framework 版本 2.0 – 3.5 SP1

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Web.configC:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\Web.config 在 32 位计算机上,只存在 Framework 文件夹。在 64 位计算机上,存在 Framework 和 Framework64 两个文件夹。因此,如果您拥有运行 CLR 2 及 CLR 4 的 32 位和 64 位应用程序池,则必须将该条目添加至这四个文件。此外,如果您将 <appSettings> 条目也添加至这些配置文件,则将产生系统范围的更改。

已知问题

  • 安装安全更新 2638420 后,票证解密失败启用新的票证行为后,所有使用旧行为生成的 Forms 身份验证票证将失效。出现此问题时,最终用户将注销,并且服务器管理员可能会遇到票证解密失败问题。此外,事件日志中会记录以下错误消息:

    日志名称:应用程序事件 ID: 1315事件代码: 4005事件消息:此请求的 Forms 身份验证失败。原因:提供的票证无效。

    这些失败可能会导致意外行为。例如,如果网页受 <authorization> 元素保护,则可能会出现“HTTP 401”或“HTTP 302”错误。 安装安全更新 2638420 后,管理员可能会遇到若干票证解密失败问题,因为以前生成的票证已过期。由于会生成新票证,失败次数和频率应随时间的推移逐渐减少。安装安全更新后,如果在较长时间内仍出现解密失败问题,这说明 Web 场中的某些服务器仍在使用旧的票证行为。例如,满足以下两个条件之一时将出现此问题:

    • 一个或多个服务器未安装安全更新 2638420。

    • 一个或多个服务器设置了上述兼容开关。本文章前面部分已对兼容开关做了介绍。

更多信息

TicketCompatibilityMode 配置开关不再受支持由于安全更新 2638420 会更改 Forms 身份验证票证的格式,因此,如果安装并启用安全更新 2638420,将不再支持 <forms/ticketCompatibilityMode> 配置开关。 有关 <forms/ticketCompatibilityMode> 配置开关的详细信息,请访问以下 MSDN 网站:

有关

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。