firebase - 自动验证链接

标签 firebase firebase-authentication

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

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

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

我的问题是:这种行为是故意的吗?有什么方法可以将其关闭吗?

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

谢谢

最佳答案

该行为是故意的。

对于最终用户来说,如果他们使用 Google 或 Facebook 登录应用,后来想要恢复密码,最可能的原因是他们(或攻击者)无法使用该身份提供商登录。

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

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

关于firebase - 自动验证链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112863/

相关文章:

firebase - 如何在后端使用 firebase 云函数直接调用函数来应用身份验证中间件

firebase - 为什么 Firebase 功能部署极其缓慢?

Android 发布 Facebook 登录失败

swift - Xcode Swift Firebase 如何创建 FIRAuth 的第二个实例

python - 在 Apple Silicon/M1 上安装 python firebase-admin 失败,grpico 失败

javascript - 如何针对此用例扩展 Firebase Cloud 功能中的推送通知?

firebase - 当我使用Firebase Unity插件在android中实现FaceBook Auth功能时,它崩溃了

javascript - Firebase 停止监听 onAuthStateChanged

firebase - 如何模拟/创建 Firebase Usercredentials 对象以进行测试

ios - FirebaseAuth 升级 iOS 后电子邮件登录选项消失