Azure AD认证下局部页面更新时偶现CORS错误的排查求助
问题:Azure AD认证下Web Farm环境偶发CORS错误
环境与背景
- 混合技术栈网站(ASP.NET、.NET Core、经典ASP),部署在Windows Server 2016 IIS,由2台服务器组成Web Farm,前端配置粘性会话负载均衡
- 采用企业安全组搭建的Azure AD认证,网站面向公网,少量页面公开,多数页面需认证
错误现象
- 仅部分用户偶发CORS错误,触发场景为使用.NET UI控件进行类AJAX的局部页面保存/编辑操作时,推测仅在认证令牌需刷新且操作处于局部页面更新过程中发生
- 错误信息:
Access to XMLHttpRequest at 'https://login.microsoftonline.com/[...]'(redirected from 'https://WEBSITE/FOLDER/PAGENAME' ) from origin'https://WEBSITE' has been blocked by CORS policy: No'Access-Control-Allow-Origin' header is present on the requested resource.
已尝试的无效方案
- 在站点顶级
web.config中添加各类Access-Control自定义头(含通配符Access-Control-Allow-Origin),后全部移除;曾添加的配置如下:
Access-Control-Allow-Origin : https://[OUR-WEBSITE] Access-Control-Allow-Credentials : true Access-Control-Allow-Methods : GET, POST, OPTIONS Access-Control-Allow-Headers : Origin, Content-Type, Accept
- 移除设置为
SAMEORIGIN的X-Frame-Options头 - 配置允许连接
login.microsoftonline.com的Content-Security-Policy-Report-Only策略,未收到拦截报告
复现与进展
- 已通过Visual Studio 2022标准模板复现问题:创建ASP.NET Web Application(.NET Framework 4.8),选择Web Forms及Microsoft Identity平台认证,在Default.aspx中添加每2分钟调用Contact.aspx的JS代码,运行45分钟至1小时后出现相同错误
- 8月9日更新:在启动代码中添加以下配置后,单服务器环境(工作站、开发/测试/预发布)问题已解决,但Web Farm生产环境仍会在约10分钟后出现相同错误,推测与Microsoft Identity刷新令牌无法识别目标服务器有关(已配置粘性会话):
CookieSameSite = SameSiteMode.None, CookieSecure = CookieSecureOption.Always, [...]Provider = new CookieAuthenticationProvider() { OnResponseSignIn = (context) => { context.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddHours(12); } }, [...]new OpenIdConnectAuthenticationOptions { UseTokenLifetime = false,
求助需求
寻求可解决Web Farm环境下该问题的配置、头信息设置或其他排查方案
内容的提问来源于stack exchange,提问作者PhilipD
相关产品推荐
相关产品推荐

