Kyl*_*gan 6 authentication bcrypt firebase firebase-authentication
我是一家公司的开发人员,该公司的应用程序是用PHP和MySQL构建的.我们有大约300个用户使用bcrypt对其密码进行哈希处理并存储在users表中的用户.我们希望使用Angular和Firebase重建应用程序.
我的问题是,如何通过Firebase迁移这些用户并使用Firebase Auth.迁移配置文件信息很容易,但我想确保用户在登录新应用程序时仍然可以使用相同的电子邮件/密码.
以下是我想到的一些方法.在我看来,所有这些都很可怕.
A)创建一个使用bcrypt的自定义身份验证系统,然后只复制哈希值.这不是我想要的,因为我不想维护自定义身份验证解决方案.
B)每次用户登录旧系统时,从登录字段中获取密码,以明文形式存储,然后使用电子邮件/密码在Firebase中手动创建每个用户.在我们切换到新应用程序之前,这将要求100%的用户登录.这不太可能.这显然也是对隐私的侵犯.我敢肯定它违反了某种法律或标准.但它有效,这是最后的选择.
C)每次用户登录旧系统时,请以明文形式将电子邮件/密码发送到脚本,该脚本使用相同的用户/电子邮件自动创建新的Firebase用户.在我们切换到新应用程序之前,这将要求100%的用户登录.这不太可能.它比选项B更难建立.
这些选项都不是很好看.他们都有缺点.有更好的选择吗?如果不是,在B和C之间,哪个是最合法/合乎道德的?选项B诱惑我,因为它非常简单,但我不想破坏任何法律或失去我公司客户的信任.
[来自Firebase身份验证团队]
Firebase有更好的解决方案.对于众所周知的哈希算法(hmac-sha256,bcrypt,scrypt等),Firebase身份验证服务可以批量导入现有用户的密码哈希值.最终用户只需使用现有密码进行签名,您的应用就会收到包含您上传的同一user_id的Firebase令牌.不需要A/B/C选项.
[Update 11/19] Firebase命令行工具 3.2.0支持将bcrypt哈希密码导入Firebase身份验证服务.
披露:我在 Auth0 工作。
免责声明:如果您真的从实用的角度决定使用 Firebase,这可能对您没有帮助,因为它专注于 Auth0 提供的解决与您描述的问题类似的问题。但是,从理论的角度来看,这可能会对您有所帮助,因此我认为值得分享。
够法律的东西...
查看本指南,详细了解Auth0如何支持将用户从自定义商店迁移到托管商店。
... 将用户从自定义数据库连接自动迁移到 Auth0。此功能会在每个用户登录时将用户一次添加到 Auth0 数据库,并避免要求您的用户同时重置他们的密码。
该方法类似于您的选项 C,但唯一需要远离旧系统的是数据库。每个人都会开始使用新的应用程序,并且登录对用户来说是透明的。根据 Firebase 提供的 API,您很可能会实现类似的东西,这就是我的建议。
此外,您甚至不应考虑任何包含手动步骤且必须处理纯文本密码的过程。
最后要注意的是,重建您的应用程序以使用外部身份验证服务的绝佳决定,即使它不是 Auth0。:)
身份验证是一个难题,希望更多的应用程序开发人员不再浪费时间处理与他们的应用程序解决的业务问题完全无关的问题。
| 归档时间: |
|
| 查看次数: |
2893 次 |
| 最近记录: |