【问题标题】:Migrate user authentication to Firebase Auth将用户身份验证迁移到 Firebase 身份验证
【发布时间】:2017-03-18 13:22:27
【问题描述】:

我是一家公司的开发人员,该公司拥有使用 PHP 和 MySQL 构建的应用程序。我们有大约 300 个用户,他们的密码使用 bcrypt 散列并存储在 users 表中。我们正在寻求使用 Angular 和 Firebase 重建应用程序。

我的问题是,如何通过 Firebase 迁移这些用户并使用 Firebase Auth。迁移个人资料信息很容易,但我想确保用户在登录新应用程序时仍然可以使用相同的电子邮件/密码。

以下是我想到的一些方法。在我看来,所有这些都很糟糕。

A) 创建一个使用 bcrypt 的自定义身份验证系统,然后将哈希复制过来。这不是我想要的,因为我不想维护自定义身份验证解决方案。

B) 每次用户登录旧系统时,从登录字段中获取他们的密码,以明文形式存储,然后使用他们的电子邮件/密码在 Firebase 中手动创建每个用户。这将需要 100% 的用户在我们切换到新应用程序之前登录。这是不太可能的。这显然也是对隐私的侵犯。我敢肯定它违反了某种法律或标准。但它确实有效,而且是不得已的选择。

C) 每次用户登录旧系统时,将电子邮件/密码以明文形式发送到脚本,该脚本会自动创建具有相同用户/电子邮件的新 Firebase 用户。这将需要 100% 的用户在我们切换到新应用程序之前登录。这是不太可能的。它也比选项 B 更难构建。

这些选项看起来都不是很好。他们都有缺点。有更好的选择吗?如果不是,在 B 和 C 之间,哪个最合法/合乎道德?选项 B 很吸引我,因为它超级简单,但我不想违反任何法律或失去公司客户的信任。

【问题讨论】:

标签: authentication firebase firebase-authentication bcrypt


【解决方案1】:

[来自 Firebase 身份验证团队]

Firebase 有更好的解决方案。 Firebase 身份验证服务能够批量导入现有用户的密码哈希,用于众所周知的哈希算法(hmac-sha256、bcrypt、scrypt 等)。最终用户只需使用他们现有的密码进行签名,您的应用就会收到一个 Firebase 令牌,其中包含您上传的相同 user_id。不需要 A/B/C 选项。

[11/19 更新]Firebase command line tool 3.2.0 支持将 bcrypt 哈希密码导入 Firebase 身份验证服务。

【讨论】:

  • 太好了。有没有我可以收到的电子邮件通讯,它会在它发布时宣布?另外,我们大概聊了多久?一个月?一年?十年?
  • 有什么办法可以让这个功能加入某种测试计划吗?
  • Firebase 发行说明可以在firebase.google.com/support/releases找到。
  • 要立即试用该功能,您可以通过firebase.google.com/support/contact/bugs-features 提交功能请求,我们会尽快回复您。
【解决方案2】:

披露:我在 Auth0 工作。

免责声明:如果您真的从实用的角度考虑使用 Firebase,这可能对您没有帮助,因为它专注于 Auth0 提供的解决与您描述的问题类似的问题。 但是,从理论上讲,这可能会对您有所帮助,因此我认为值得分享。


合法的东西就够了……

查看本指南以获取有关 Auth0 supports migrating users from your custom store to a hosted one 的完整详细信息。

...用户从自定义数据库连接自动迁移到 Auth0。此功能会在您的用户每次登录时一次将其添加到 Auth0 数据库中,并避免要求您的用户同时重置他们的密码。

该方法类似于您的选项 C,但唯一需要保留旧系统的是数据库。每个人都将开始使用新应用程序,并且登录将对用户透明地进行。根据 Firebase 提供的 API,您很可能会实现类似的东西,这将是我的建议。

此外,您甚至不应该考虑任何包含手动步骤并且必须处理纯文本密码的过程。


最后一点,重建应用以使用外部身份验证服务的绝佳决定,即使它不是 Auth0。 :)

身份验证是一个难题,希望更多的应用程序开发人员不要再将时间浪费在与他们的应用程序解决的业务问题完全无关的问题上。

【讨论】:

  • 感谢您的出色回答,但我将继续为这个项目使用 Firebase 身份验证。
  • 别担心,我会想着我可能已经帮助您从其他方面获得了更快的响应时间...... :)
  • 公平地说,你的竞争对手在这里的回答没有任何帮助?
  • Auth0 可能曾经是一种选择,但它已经演变为一种弹出式登录服务,这可能提高了初学者和非常基本的应用程序的易用性,但对具有自定义 UI 的自定义本机表单。此外,由于 Firebase 令牌,与 Firebase Firestore 的集成很困难。 Firebase Auth 是免费的,而 Auth0 是在少数用户之后付费的。
  • 我宁愿在选择 Auth0 之前推出自己的身份验证服务,但由于 Firebase 身份验证已经足够好,就使用它吧。
【解决方案3】:

Firebase CLI 最近添加了一个auth:import 命令,允许您将现有用户数据库从 CSV 或 JSON 导入 Firebase Auth。

【讨论】:

    猜你喜欢
    • 2021-03-15
    • 2021-09-27
    • 2012-08-04
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 2011-04-11
    • 2016-10-18
    相关资源
    最近更新 更多