安装 Windows 更新后,HttpHandler 中的会话无法正常工作

After installing Windows update the session in HttpHandler does not work properly

安装 Windows 更新 2020 后 - HttpHandler 中的 KB4534273 和 2020-KB4535101 会话无法正常工作。

对于 SAML2 身份验证,在 SP 端处理响应时,我会验证响应与发送的请求。但是,在安装更新后处理更新时,我没有可用的会话。 IDP是https,SP是http。

我的处理程序实现接口 IRequiresSessionState public class Saml2Handler : IHttpHandler, IRequiresSessionState

该解决方案之前有效...

请参阅这篇 Microsoft 文章中的已知问题:https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite#known-issues

我们在修补服务器后遇到了类似的问题,这与 .NET Framework 中对 SameSite cookie 处理和 sessionState 的更改有关。

我们的场景是这样的——用户未经身份验证到达,我们在会话中设置一个值,将他们重定向到外部站点进行身份验证,之后通过 HTTP 将用户发送回我们的站点 POST。正是他们返回 POST 导致了这个问题。

我们找到了一些解决方法:

  1. 恢复到补丁前的 cookie 行为 (https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite#reverting-net-472-behavior)
  2. 保留 sessionState 的新 cookie 设置并手动设置 cookie(这样做的好处是在会话 cookie 上保留新推荐的默认安全设置)

    context.Response.AddHeader("set-cookie", $"cookiename=cookievalue; path=/; SameSite=None; Secure");

我们选择了选项 #2