session-cookies - 安装 Windows 更新后,HttpHandler 中的会话无法正常工作
问题描述
安装 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 的更改有关。
我们的场景是这样的 - 用户未经身份验证到达,我们在 session 中设置一个值,将他们重定向到外部站点进行身份验证,然后通过 HTTP POST将用户发送回我们的站点。正是他们在 POST 上回来的事实导致了这个问题。
我们找到了几个解决方法:
- 恢复到补丁前 cookie 行为 ( https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite#reverting-net-472-behavior )
- 保留 sessionState 的新 cookie 设置并手动设置 cookie(这样做的好处是在会话 cookie 上保留新的推荐默认安全设置)
context.Response.AddHeader("set-cookie", $"cookiename=cookievalue; path=/; SameSite=None; Secure");
我们选择了选项 #2
推荐阅读
- linux - Linux 中的输出格式
- python - Keras 自定义损失:a * MAE + (1-a) * 常量
- grammar - 所有歧义语法都可以转换为明确语法吗?
- css - bootstrap 4:下拉菜单,导航药丸和单独的链接在水平线上
- facebook - 在 Facebook Graph Explorer 中为测试用户创建测试页面
- node.js - 生产 Angular 应用程序连接到本地 Express 实例而不是生产 Express 实例
- ios - 将默认 UITextField 值设置为 0(计算器)
- vb.net - 在 vb.net datagridview 中添加包含记录号的列
- linux - 通过sed替换方括号内的多行代码
- java - JPA 和 JTA 同步