asp.net - Chrome 87 在针对 Windows IIS 10 的 CORS 中的 Windows 身份验证失败

标签 asp.net google-chrome cors windows-authentication

Chrome 86(及更早版本)、Edge、Curl 和 IE 都能够在 Windows 2019 机器上对我的 IIS 10 ASP.NET 服务进行跨域 Windows 身份验证,没有任何问题。
但是 Chrome 87 失败了“访问 XMLHttpRequest at 'https://[REDACTED]' from origin 'http://[DIFFERENT]' has been Blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present在要求的“
奇怪的是 - Chrome 87 与在 IIS 7.5 中运行的相同 ASP.NET 服务一起工作,该服务在配置相同的 Windows 2008 机器(不要问)上运行。
更新:注意 - 我意识到 [2020-12-04] “工作”系统碰巧位于已添加到我的“始终可以使用 cookie 的站点”列表中的不同域中。所以“修复”从一开始就盯着我看......;)
使用 curl - 我看不到 Windows 身份验证的 IIS 响应之间有任何区别。
如果我破解我的 ASP.NET 并让它在所有请求中包含一个回显的 Access-Control-Allow-Origin 'http://[DIFFERENT]' 而不是主要请求 - 那么 Chrome 87 会发出 401 - 未授权 - 而不是继续来回进行 Windows 身份验证。 Curl 和其他浏览器可以使用额外的标题。
直接调用网站(没有跨域)工作得很好。
有人知道 Chrome 87 在做什么不同吗?开发工具只显示链中的“最后一个”请求 - 所以我不知道失败之前发生了什么。
更新:[2020-12-02]
显然 Chromium 团队声称它正在按照它需要的方式工作......但对我来说它似乎很奇怪。
https://bugs.chromium.org/p/chromium/issues/detail?id=1154281
“这是现在预期的行为 - 现在阻止第三方 cookie 就像设置凭据:在第三方请求上省略。我们将看到我们收到了多少关于此的报告,但以前的行为是有问题的,因为真正未经认证的请求和那些有提供 HTTP 身份验证凭据,但没有 cookie,将共享套接字。”

最佳答案

我们在我们的环境中看到了同样的情况,Chrome 87 现在将 cookie 规则应用于 Kerberos 和 NTLM 身份验证(显然是一个错误)。这不仅会影响 XHR,还会影响从另一个站点加载的任何资源(图像、iframe 等)。
我们设置了“阻止第三方 cookie”,发现将受影响的站点和域添加到 Chrome 中的“始终可以使用 cookie 的站点”列表中已恢复身份验证;并且对我们来说是一种可以接受的解决方法,因为我们通过组策略管理 Chrome,并且可以轻松推出更新的网站列表。
2020-12-02:
截至今天,MS Edge 87 表现出相同的行为。

关于asp.net - Chrome 87 在针对 Windows IIS 10 的 CORS 中的 Windows 身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64919171/

相关文章:

node.js - 如何将 CORS-Headers 添加到静态连接服务器?

javascript - 使用带条件的循环创建 Javascript 对象

c# - 找不到资源 asp.net mvc

asp.net - 单声道 + mysql = 慢?

android - Chrome for Android contenteditable 错误

node.js - Puppeteer - 如何使用本地 IP 地址连接 WSEndpoint?

c# - Chrome 中的 Request.Browser.Browser 返回 "IE"

javascript - document.styleSheets[i].disabled 在 chrome 中不起作用

.htaccess - 访问控制允许来源多个来源域?

cookies - Dart BrowserClient POST不包括我的cookie