iOS 上的 B2C 弹窗:“我的应用程序”想要使用“b2clogin.com”登录

问题描述 投票:0回答:3

将 Xamarin.Forms 中的 Microsoft.Identity.Client 从 1.x 升级到 4.x 后,大多数功能的工作原理基本相同。但是,登录 iOS 会弹出一个窗口,显示:

“我的应用”想要使用“b2clogin.com”登录

这允许应用程序和网站共享有关您的信息。

如果用户点击“继续”也没关系,但这很难说是无缝的。

据说它与 iOS 12 有关,但这似乎不是我的触发因素。有一篇 Microsoft 文章 说这实际上是正常的,并指出:

但在 iOS 上,用户可能必须同意浏览器才能回调应用程序,这可能很烦人。

我发现可以设置 .WithUseEmbeddedWebView(true) ,这会隐藏 URL 并删除弹出窗口,这适用于 Facebook 登录,但 Google 登录很难。

存在通用链接而不是 URL 方案关联域的潜在路径。

调查该路径,看来我只需要使用以下 JSON 设置 URL https://myapp.b2clogin.com/.well-known/apple-app-site-association

{
  "webcredentials": {
    "apps": [
      "MYTEAMID.com.mycompany.myapp"
    ]
  }
}

不幸的是,我无法控制该 URL。

还有其他想法吗?

xamarin.ios azure-ad-b2c
3个回答
3
投票

简短的回答是——今天无法完成,因为此警报弹出窗口内置于 iOS 框架中。任何身份验证提供程序、库等如果在 iOS 中使用 ASWebAuthentication API,都会触发此警报

您可以选择使用不同的嵌入式浏览器弹出 API,这些 API 不会导致此警报,但它们将具有沙盒 cookie,并且用户可能无法体验 SSO。有一个 MSAL 文档页面更详细地讨论了这一点:

https://learn.microsoft.com/en-us/azure/active-directory/develop/customize-webviews


1
投票

最佳的用户体验:

我仅使用 ROPC 进行登录(本机用户名/密码字段或可以使用生物识别)。
所以我在简单登录时没有任何弹出窗口。

其余的我使用公共流程(重置密码、Google 提供商等..)
打开 WebView 时不幸会弹出警告。


0
投票

我对 Flutter 和 app_auth 包也有同样的问题。对我来说,删除 iOS 弹出消息的修复方法是使用下面解释的preferEphemeralSession 设置:

来自:https://pub.dev/packages/flutter_appauth 临时会话(仅限 iOS 和 macOS) 在 iOS(版本 13 及更高版本)和 macOS 上,您可以使用选项 PreferredEphemeralSession = true 启动临时浏览器会话以登录和注销。

对于临时会话,不会出现类似“app_name”想要使用“domain_name”登录 iOS 的警告。

选项preferEphemeralSession = true必须仅用于结束会话调用(如果它也用于登录调用)。否则,浏览器中仍然存在活动的登录会话。

© www.soinside.com 2019 - 2024. All rights reserved.