将用户身份验证迁移到Firebase身份验证

问题描述:

我是一家拥有使用PHP和MySQL构建的应用程序的公司的开发人员。我们有大约300位用户使用bcrypt对密码进行散列处理,并存储在用户表中。我们正在寻找使用Angular和Firebase重建应用程序。将用户身份验证迁移到Firebase身份验证

我的问题是,如何通过Firebase将这些用户迁移并使用Firebase身份验证。将配置文件信息迁移很容易,但我想确保用户在登录到新应用程序时仍然可以使用相同的电子邮件/密码。

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

A)创建一个使用bcrypt的自定义认证系统,然后将散列复制过来。这不是我想要的,因为我不想保留自定义身份验证解决方案。 B)每当用户登录到旧系统时,从登录字段获取密码,以明文形式存储密码,然后使用其电子邮件/密码手动创建每个Firebase用户。在我们切换到新应用之前,这需要100%的用户登录。这不太可能。这显然是隐私的违反。我相信它打破了某种法律或标准。但它有效,这是最后的选择。

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

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

[从火力地堡认证团队]

火力地堡有一个更好的解决方案。 Firebase身份验证服务可以批量导入您的现有用户的散列算法(hmac-sha256,bcrypt,scrypt等)的批量导入密码散列值。最终用户只需使用其现有密码进行签名,并且您的应用将收到包含您上传的相同user_id的Firebase令牌。没有必要选择A/B/C。

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

+0

太棒了。是否有电子邮件通讯,我可以得到它会宣布这一点,当它出来?另外,我们大概多长时间聊天?一个月?一年?十年? –

+0

有没有什么办法可以获得这个功能的某种测试版程序? –

+0

Firebase发行说明可在https://firebase.google.com/support/releases中找到。 –

披露:我在Auth0工作。

免责声明:如果您真的将自己的想法放在从实际的角度来看使用Firebase,这可能无助于您,因为它专注于Auth0提供的解决类似于您所描述问题的问题。 但是,从理论的角度来看,这可能对你有所帮助,所以我认为值得分享。


足以与法律的东西...

检查本指南为一个完全详细视图如何Auth0 supports migrating users from your custom store to a hosted one

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

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

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


最后一点,在重建您的应用程序使用外部认证服务,即使它不是Auth0出色的决定。 :)

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

+0

感谢您的出色答案,但我将坚持使用此项目的Firebase身份验证。 –

+0

不用担心,我会想我可能会帮助你从其他各方得到更快的响应时间...... :) –

+0

公平地说,你的竞争对手的回答没有任何帮助 –

Firebase CLI最近添加了auth:import命令,该命令允许您将现有的用户数据库从CSV或JSON导入Firebase身份验证。