将原生 Google 帐户选择器与 B2C 结合使用

Posted

技术标签:

【中文标题】将原生 Google 帐户选择器与 B2C 结合使用【英文标题】:Use native Google Account Picker with B2C 【发布时间】:2019-11-01 23:46:31 【问题描述】:

这更像是一个 Azure B2C 问题,而不是 Flutter/android 问题:

TLDR:如何使用 Google 访问令牌“ya29.Glss...”获取 B2C JWT 令牌“eyJhbGciO...” em>'?

我们正在构建一个使用 Azure B2C 来管理用户的 Flutter 应用。虽然这适用于simple_auth,但我们并不是整个“浏览器弹出导航”/chrome 自定义选项卡的忠实拥护者,我们希望使用原生的google sign in 插件来显示本地 google 帐户并允许我们获得来自谷歌的访问和 id 令牌(令牌以'ya29.Glss ...'开头。但是之后我们应该如何处理这两个令牌?我想我必须将它发布到某个自定义策略/端点B2C 接收 B2C 令牌(以 'eyJhbGciO...' 开头)还是我需要使用其他参数从 google 请求令牌?

任何帮助将不胜感激。 干杯

【问题讨论】:

嗨@Chief Wiggum。您是想获得 Azure AD B2C 的原生体验,还是想使用 Google 登录用户,或两者兼而有之? 嗨,克里斯,我正在寻求 B2C 的本地体验。 @Chris:如果我不够清楚,抱歉。我正在寻找使用本地 google 帐户选择器登录到 B2C。不是 ROPC。 【参考方案1】:

您可以create a resource owner password credential (ROPC) flow 使本机应用程序能够收集用户凭据并与 Azure AD B2C 租户交换 ID 令牌、访问令牌和刷新令牌。

这些Android 和ios 示例演示了如何使用AppAuth SDK 集成Android 或iOS 应用和ROPC 流程。

【讨论】:

我知道 ROPC 流程,但我希望本机 Google Account Picker 能够使用 B2C 而不是浏览器中的标准流程。 ROPC 不允许我从 google 帐户(或 facebook 等)列表中选择然后登录 B2C,还是我弄错了? 嗨@ChiefWiggum。 Google 登录允许应用使用他们的 Google 帐户登录用户,然后代表这些 Google 用户访问服务。为此,Google Sign-In 不能与 Azure AD B2C 一起使用。但是,您可以考虑使用带有 AppAuth 或 MSAL 的本机应用为 Azure AD B2C 实现类似的体验。【参考方案2】:

看来您尝试的场景可能不适用于 B2C 或任何其他身份产品,您可以尝试以下链接将 B2C 在 android 中与开源包集成。

https://azure.microsoft.com/en-in/resources/samples/active-directory-b2c-android-native-appauth/

【讨论】:

我奖励你积分,因为没有其他答案。它使用浏览器选项卡,这正是我不想要的。我正在寻找涉及本机 google 帐户选择器的解决方案。无论如何,感谢您的努力。

以上是关于将原生 Google 帐户选择器与 B2C 结合使用的主要内容,如果未能解决你的问题,请参考以下文章

基于用户名的本地帐户的自定义 B2C 策略

EXPO Google 登录和 Android 应用问题

Azure B2C 活动目录

使用 Azure AD B2C 在注册期间添加帐户 ID

markdown 将旋转器与覆盖层结合在一起

使 Google 登录对话框不可取消