Edge调用window.open()时Asp.Net MVC应用不再转发凭据(IE11可正常运行
无需修改应用的配置修复方案
以下所有调整均针对ADFS服务或Edge浏览器组策略,不需要改动CRM或ASP.NET MVC应用的代码:
1. 调整ADFS服务跨站访问安全头配置
公网环境下Edge默认执行更严格的跨站安全校验,ADFS默认的响应头会阻止非信任域上下文调用STS登录页,是该问题的最常见诱因:
- 登录ADFS服务器,以管理员身份打开PowerShell,先查看当前框架限制配置:
Get-AdfsProperties | Select-Object *frame* - 执行命令将CRM和MVC应用的公网域名添加到允许列表:
Set-AdfsResponseHeaders -SetHeaderName "X-Frame-Options" -SetHeaderValue "ALLOW-FROM https://<CRM公网域名> https://<MVC应用公网域名>" - 同步配置CSP头适配Edge的安全规则:
Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "frame-ancestors 'self' https://<CRM公网域名> https://<MVC应用公网域名>; object-src 'none'; base-uri 'self';" - 重启ADFS服务使配置生效。
注意替换命令中的域名占位符为客户实际使用的公网域名
2. 调整Edge的SameSite Cookie安全策略
Edge公网环境默认启用SameSite Cookie限制,ADFS会话Cookie如果未配置对应属性会被拦截导致验证失败,可通过组策略调整:
- 打开组策略编辑器,定位到
管理模板/Microsoft Edge/Content settings/遗留SameSite Cookie行为 - 启用该策略,设置为
禁用SameSite默认行为,允许站点发送未指定SameSite属性的Cookie - 同时找到
管理模板/Microsoft Edge/Content settings/为指定的网站启用不严格的SameSite Cookie执行,将STS域名、CRM域名、MVC应用域名添加到列表中。
3. 配置Edge内网信任区域映射
即使是公网访问,也可以将三个相关域名加入Edge的Intranet安全区域,沿用内网环境的身份验证逻辑:
- 打开组策略编辑器,定位到
管理模板/Microsoft Edge/HTTP身份验证/将Intranet站点映射到区域 - 启用该策略,添加三条配置:
https://<CRM公网域名>对应值为1https://<MVC应用公网域名>对应值为1https://sts.domain.com对应值为1
- 同步启用
管理模板/Microsoft Edge/HTTP身份验证/Intranet区域的自动登录策略,设置为只在Intranet区域自动登录。
4. 适配ADFS的WIA支持用户代理列表
Edge的用户代理标识默认可能不在ADFS的Windows集成身份验证支持列表中,导致公网环境验证流程异常:
- 登录ADFS服务器打开PowerShell,查看当前支持的用户代理列表:
Get-AdfsProperties | Select-Object WiaSupportedUserAgents - 若列表中无Edge相关标识,执行命令添加:
Set-AdfsProperties -WIASupportedUserAgents ((Get-AdfsProperties).WIASupportedUserAgents + "Edge/") - 重启ADFS服务生效。
所有配置调整完成后,清除Edge浏览器的缓存和Cookie,重启浏览器后验证功能是否正常。
内容的提问来源于stack exchange,提问作者SkippingAdi
相关产品推荐
相关产品推荐

