Warm tip: This article is reproduced from serverfault.com, please click

asp.net-Chrome 87无法针对Windows IIS 10在CORS中进行Windows身份验证

(asp.net - Chrome 87 is failing Windows Authentication in CORS against Windows IIS 10)

发布于 2020-11-19 20:05:50

Chrome 86(及更低版本),Edge,Curl和IE都可以针对Windows 2019计算机上的IIS 10 ASP.NET服务执行跨源Windows身份验证,而不会出现任何问题。

但是Chrome 87失败,原因是“从源'http:// [DIFFERENT]'访问'https:// [REDACTED]'处的XMLHttpRequest”已被CORS策略阻止:不存在“ Access-Control-Allow-Origin”标头根据要求”

奇怪的是-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和其他浏览器也可以使用其他标头。

直接调用网站(无跨域)效果很好。

有人知道Chrome 87在做什么不同吗?开发工具仅显示链中的“最后一个”请求-因此,我不知道发生故障之前发生了什么。

更新:[2020-12-02] 显然,Chromium团队声称它正在按照需要的方式进行工作。。。但是,这似乎对我来说很不可思议。

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

“这是预期的行为-阻止第三方Cookie的行为现在就像设置crendials:忽略第三方请求。我们将看到有多少报告,但是以前的行为是错误的,因为真正未经身份验证的请求以及那些提供了HTTP身份验证凭据,但没有Cookie会共享套接字。”

Questioner
Robin Johnson
Viewed
11
Tom 2020-12-03 20:31:50

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

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

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