Azure Active Directory Safari 重定向问题

20

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

Safari 12的更新内容如下:https://developer.apple.com/safari/whats-new/

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

这个新的更新会导致Apple设备用户在登录时出现无限重定向循环。

这很可能是因为Safari不允许微软的cookie通过,这导致微软的服务器重定向回登录页面以获取所需的cookie。然而,浏览器仍然具有一些身份信息,这导致用户自动重新登录,重定向到服务器。在请求中仍未发送cookie,导致服务器将用户发送回登录页面。这种来自服务器和浏览器的重定向似乎是无限重定向背后的主要原因。

是否有任何更新、原因或解决方法来解决/解决Safari和Microsoft登录重定向问题?


我正在解决Safari和另一个网站的问题。我希望这是原因,但从2018年10月24日起,我能够在Sierra和Mohave的Safari 12上登录。这个问题解决了还是其他什么原因? - seizethecarp
1
截至2018年10月25日,在我的iOS 12上的Safari中,问题还没有得到解决。 - G_P
只是想在我之前的评论旁边加上一句话,表明@BrianReiter答案中的解决方法对我有效。 - G_P
我似乎在Safari 13.0.4和macOS 10.15.2上遇到了这个错误的回归,我昨天(2019年12月15日)安装了它,但立即出现了这个问题。 - scot
2个回答

15

您是正确的。AAD在Safari兼容性方面存在一些已知问题。您可以在用户反馈中提出新功能请求,或者投票并关注现有的某些请求。

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

更新: 产品团队已经回复说这是苹果的问题。目前的情况是,苹果团队和微软PG团队正在解决此问题,但是微软开发团队无法做任何事情,因为Microsoft没有问题。问题是由于新的隐私和安全更新,Apple没有正确地向login.microsoftonline服务器发送cookie。

https://developer.apple.com/safari/whats-new/


2
已经从产品团队那里得到了更新,编辑了帖子。在有新信息发布时,我将继续更新此主题。 - Marilee Turscak - MSFT
@ThiagoCustodio 我找到了一篇关于这个问题的博客文章,里面有一些用户评论 - 为了以防万一,我想分享一下:https://hajekj.net/2018/08/31/beware-of-samesite-cookie-policy-in-asp-net-core-and-upcoming-ios-12/ - G_P
谢谢,我在处理这个问题时看到了那个。 - Thiago Custodio
@ThiagoCustodio,你能让它在ASPNET CORE / Azure AAD上运行吗? - Sarahrb
@Sarahrb 是的...一切都正常,但这是非常老的帖子,对吧!? - Thiago Custodio
显示剩余4条评论

8
这里有一个由aspnet/security团队在GitHub上记录的解决方案。 https://github.com/aspnet/Security/issues/1864 如果您正在使用ASP.NET Core Identity,则可以通过以下代码配置cookie来禁用保护。请注意,不要删除任何HTML标签。
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 认证,并验证它对我有效。再次感谢! - G_P
非.NET用户怎么样? - aj go

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接