Chrome 87 失败 Windows 针对 Windows IIS 10 的 CORS 身份验证

Chrome 87 is failing Windows Authentication in CORS against Windows IIS 10

Chrome 86(及更早版本)、Edge、Curl 和 IE 都能够对我的 IIS 10 ASP.NET 服务进行 cross-origin Windows 身份验证 ASP.NET Windows2019年机器没问题

但是 Chrome 87 失败并显示“从来源 'http://[DIFFERENT]' 访问 'https://[REDACTED]' 处的 XMLHttpRequest 已被 CORS 策略阻止:否 'Access-Control-Allow-Origin' header 是出现在所要求的

奇怪 - Chrome 87 在 Windows 2008 机器上的 IIS 7.5 中与相同的 ASP.NET 服务 运行 一起工作(不要问) 配置相同。

更新:注意 - 我意识到 [2020-12-04] “工作”系统恰好在另一个域上,该域已经添加到我的“始终可以使用 cookie 的站点”列表。所以“修复”从一开始就盯着我看……;)

使用 curl - 我看不出 Windows 身份验证的 IIS 响应之间有任何区别。

如果我破解我的 ASP.NET 并让它包含对所有请求而不是主要请求的回显 Access-Control-Allow-Origin 'http://[DIFFERENT]' - 然后 Chrome 87 吠叫 401 -未授权 - 而不是继续来回进行 Windows 身份验证。 Curl 和其他浏览器与额外的 headers 一样好。

直接调用网站(没有 cross-origin)工作正常。

有人知道 Chrome 87 有什么不同吗?开发工具只显示链中的“最后一个”请求 - 所以我不知道失败之前发生了什么。

更新:[2020-12-02] 显然 Chromium 团队声称它正在按照需要的方式工作......但对我来说似乎很奇怪。

https://bugs.chromium.org/p/chromium/issues/detail?id=1154281

“这是现在预期的行为 - 阻止第三方 cookie 现在就像对第三方请求设置 crendials:omit 一样。我们会看到我们收到了多少关于此的报告,但之前行为是错误的,因为真正未经授权的请求和那些提供了 HTTP 身份验证凭证但没有 cookie 的请求将共享套接字。"

我们在我们的环境中看到了同样的情况,Chrome 87 现在正在将 cookie 规则应用于 Kerberos 和 NTLM 身份验证(显然是一个错误)。这不仅会影响 XHR,还会影响从其他站点加载的任何资源(图像、iframe 等)。

我们设置了“阻止第三方 cookie”,并发现将受影响的站点和域添加到 Chrome 中的“始终可以使用 cookie 的站点”列表已恢复身份验证;这对我们来说是一个可以接受的解决方法,因为我们通过组策略管理 Chrome 并且可以轻松推出更新的站点列表。

2020-12-02: 截至今天,MS Edge 87 表现出相同的行为。