azure-active-directory - 通过 AAD 的 SSO 在 IE 模式下使用 MS Edge(铬)失败
问题描述
我们已从 NAM 身份提供程序转移到 AzureAD。MS Edge_C 用于Enterprise Mode Site List
强制应用程序使用 IE 模式。
在新会话中,用户被从我们的应用程序重定向 (GET) 到login.microsoftonline.com
通过 SAML。选择帐户后,将另一个重定向发送到公司身份验证服务,该服务成功验证了用户。SAML 响应通过 POST 发送到应用程序。
这就是它应该的样子,这就是 NAM 的样子(它直接对用户进行身份验证)。但是自从切换到 AzureAD 后,最终返回到应用程序的 POST 被破坏了。我们的应用程序收到一个没有 SAML 相关参数的 GET 请求,因此 SSO 失败。没有 IE 模式它可以工作,但由于它是一个遗留应用程序,我们必须使用 IE 模式。
直接在 IE11 中的相同过程按预期工作。
有谁知道 AzureAD 的响应有什么问题?似乎有些东西激怒了 Edge_C 的响应,这就是为什么将“非 IE 模式”(login.mso.com)更改为“IE 模式”(应用程序)会丢弃 POST 并进行 GET。
如果有任何想法可以帮助我们解决这个问题,我将不胜感激。
解决方案
经过长时间的调试,结果证明解决方案非常简单:
- 必须将 SSO 相关 URL 添加到
Enterprise Mode Site List
asNeutral
- 请参阅https://docs.microsoft.com/en-US/deployedge/edge-ie-mode-sitelist#configure-neutral-sites
这可确保 SSO 服务在与触发 SSO 的应用程序相同的浏览器实例中使用。Edge 和 IE 之间不会发生切换。
- 应用使用 IE 模式 -> SSO 服务使用 IE 模式
- 应用程序使用边缘模式 -> SSO 服务使用边缘模式
推荐阅读
- sql - 查找列值链
- c - Paho mqtt 客户端连接丢失
- postgresql - 找不到数据库的DriverClass:将postgresql导出到S3时的极光
- php - 在 WooCommerce 中动态更改产品价格
- powershell - Powershell 将函数返回的值存储到变量中
- php - Paypal Payments Pro Sandbox 错误 很抱歉,我们现在无法完成您的付款。请稍后再试
- php - laravel 试图从控制器内的模型中获取非对象的属性
- ios - MQTT 协议 NGINX
- sql-server - 从另一个 WebAPI 连续调用 WebAPI
- ruby-on-rails - Rails Administrate - 按字母顺序对 Collection 中的 BelongsTo 列进行排序