【问题标题】:Automatic auth linking自动授权链接
【发布时间】:2017-02-08 12:14:47
【问题描述】:

在我们的应用程序中,我们使用“每个电子邮件地址一个帐户”。我们希望用户使用我们跟踪并坚持使用的特定身份验证提供商进行注册。

我今天注意到的是,如果我使用 Google 或 Facebook 提供商登录,我可以向自己发送一个指向相关电子邮件地址的密码重置链接,这样我就可以改用电子邮件/密码提供商。 根据第一个提供者的不同,行为会略有不同:

  • 如果我先使用 Google,在使用密码重置链接后,我现在可以使用任一提供商登录,并且两者都链接到同一个 firebase uid。如果我调试,我可以在我从 Firebase 返回的 authData 对象的 providerDetails 数组中看到两者。
  • 如果我首先使用 Facebook,在我使用密码链接后,密码提供程序将完全替换 Facebook 的,尽管它保留了旧的 firebase uid。此时我无法再使用 Facebook 登录。

我的问题是:这种行为是有意为之的吗?有没有办法将其关闭?

如果说用户使用 Facebook(我们跟踪)登录然后忘记并发送密码重置,这可能会导致混淆。这不是世界末日,因为他们可以继续使用密码登录,但它肯定会搅浑水。

谢谢

【问题讨论】:

  • 好问题,有兴趣fb工作人员回答!

标签: firebase firebase-authentication


【解决方案1】:

这种行为是故意的。

对于最终用户,如果他们使用 Google 或 Facebook 登录了应用,之后又想找回密码,最可能的原因是他们(或攻击者)无法使用该身份提供者登录。

用户点击密码重置链接后,Firebase 会移除非电子邮件身份提供者,以防止其他人静默访问该帐户。如果用户仍想添加 Facebook/Twitter 登录,他们可以通过手动帐户链接来实现(如果应用支持)。

如果用户的电子邮件服务与身份提供者相同(例如@gmail.com 用户使用 Google 登录应用),Firebase 会进行优化以保留身份提供者,因为没有安全风险。

【讨论】:

  • 对付这个Jin的一件事:我们发现用户没有点击重置链接,因为他们无法使用Google/Facebook登录,而是因为他们忘记了他们最初使用的方法地方。因此,他们可以使用重置链接恢复这种情况,但这确实使他们切换时感到困惑。如果他们真的无法使用 Google/Facebook 登录,他们从源头重置密码而不是在 Firebase 中切换提供商不是更有意义吗?
  • 为了解决用户忘记之前登录方式的问题,FirebaseUI 实现了标识符优先的流程,用户首先只输入他们的电子邮件,随后的提示将根据帐户状态(重定向到Google/Facebook,或现有密码,或新帐户注册)。
  • 如果用户可以在 Google/Facebook 等处重置密码,他们将能够在访问其 Google/Facebook 帐户后登录 Firebase。在这种情况下,用户无需点击 Firebase 应用中的重置密码链接。
  • 您能否提供此标识符优先方法的任何文档的链接?我在阅读的文档中没有遇到过类似的情况。
  • 虽然来自 Google Identity Toolkit (developers.google.com/identity/toolkit/web/…) 的文档有点旧,但 FirebaseUI 共享相同的流程。
猜你喜欢
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 2014-12-28
  • 2017-07-03
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
相关资源
最近更新 更多