【问题标题】:Azure Active Directory Safari Redirection IssueAzure Active Directory Safari 重定向问题
【发布时间】:2019-03-03 19:35:45
【问题描述】:

使用最新版本的 Safari (12) 在 Mac OS 和 iOS 设备上登录 Microsoft Online 似乎存在当前问题。

Safari 12 的更新显示在此处:https://developer.apple.com/safari/whats-new/

由于一些新的安全和隐私更新,似乎存在导致登录端点时无限重定向的 cookie 问题:http://login.microsoftonline.com

此新更新导致 Apple 设备上的 Safari 用户在登录时进入重定向无限循环。

这很可能是由于 Safari 不让 Microsoft cookie 通过,这导致 Microsoft 的服务器重定向回登录页面以获取所需的 cookie。但是,浏览器仍然有一些身份信息,导致用户重新自动登录,重定向到服务器。 cookie 仍然没有随请求一起发送,导致服务器将用户发送回登录页面。这种来自服务器和浏览器的重定向似乎是无限重定向背后的主要原因。

是否有任何更新、推理或解决方案来解决/解决 Safari 和 Microsoft 登录重定向问题背后的问题?

【问题讨论】:

  • 我正在对 Safari 和其他网站的问题进行故障排除。我希望这是原因,但是截至 2018 年 10 月 24 日,我可以从 Sierra 和 Mohave 的 Safari 12 登录。这个问题解决了吗?
  • 我在 iOS 12 上的 Safari 上没有解决这个问题 - 截至 2018 年 10 月 25 日。
  • 只想在我之前的评论旁边发表评论,以表明@BrianReiter 答案中的解决方法对我有用
  • 我似乎对 macOS 10.15.2 上的 safari 13.0.4 上的这个错误有一个回归,我昨天(2019 年 12 月 15 日)安装了这个问题。

标签: ios macos safari azure-active-directory adal


【解决方案1】:

你是对的。 AAD 的 Safari 兼容性存在一些已知问题。您可以在 User Voice 中提出新功能请求,或者投票并订阅一些现有功能。

https://support.microsoft.com/en-us/help/2535227/a-federated-user-is-prompted-unexp https://feedback.azure.com/forums/223579-azure-portal/suggestions/34373635-fix-signing-in-in-safari https://feedback.azure.com/forums/223579-azure-portal/suggestions/7513912-does-not-work-well-on-safari-but-works-fine-on-chr

更新:产品团队已经回复并回复说这是 Apple 的问题。目前的状态是苹果团队和微软的PG团队都在努力,但是微软的开发团队也无能为力,因为微软这边并没有错。问题是由于新的隐私和安全更新,Apple 没有正确地将 cookie 发送到 login.microsoftonline 服务器。 https://developer.apple.com/safari/whats-new/

【讨论】:

  • 使用产品团队的更新编辑了帖子。信息发布后,我将继续更新此线程。
  • 有谁知道是否有任何方法可以在 Apple 方面跟踪此问题,以查看是否/何时解决?
  • 或者,有哪些方法可以解决此问题?
  • 自您上次更新以来,这方面有什么进展吗?谢谢!
  • 那么,因为这不是 MSFT 问题,我们使用 AAD 的应用程序不适用于 IOS 12 用户?上面建议的修复不适用于 ASPNET CORE / Azure AAD,就这样吗?我们对此无能为力吗?
【解决方案2】:

在 GitHub 上有一个由 aspnet/安全团队记录的解决方案。

https://github.com/aspnet/Security/issues/1864

如果您使用的是 ASP.NET Core Identity,您可以通过以下方式禁用保护 使用以下代码配置 cookie

services.ConfigureExternalCookie(options => {
    // Other options
    options.Cookie.SameSite = SameSiteMode.None; }); services.ConfigureApplicationCookie(options => {
    // Other options
    options.Cookie.SameSite = SameSiteMode.None; });

如果您在没有 ASP.NET Core 身份的情况下使用 cookie 身份验证,您可以关闭 使用以下代码进行保护

services.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => {
    // Other options
    options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None; })

如果您使用的是外部 OIDC 提供商,则可以避免 通过将提供商使用的响应模式从 POST 更改为 GET 请求,使用以下代码。并非所有提供商都支持 这个。

.AddOpenIdConnect("myOIDProvider", options => {
    // Other options
    options.ResponseType = "code";
    options.ResponseMode = "query";
};

【讨论】:

  • 非常感谢 - 我已经搜索但没有在 github 上找到该问题。我已经部署了在没有 ASP.NET Core 身份的情况下使用 cookie 身份验证的更改,并已验证它对我有用。再次感谢您!
猜你喜欢
  • 2019-12-21
  • 2015-05-06
  • 1970-01-01
  • 2014-02-08
  • 2017-01-03
  • 2020-02-07
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多