【问题标题】:Usage of Firebase SCrypt params in nodejs scrypt packagenodejs scrypt 包中 Firebase SCrypt 参数的使用
【发布时间】:2018-02-18 20:10:35
【问题描述】:

我已经为此苦苦挣扎了一段时间,希望以前有人这样做过并且可以帮助我。我向 Firebase 人员请求 scrypt 参数,以便将我们的用户身份验证从 Firebase 迁移到我们自己的服务器。现在我得到了这些参数,但我不知道它们应该如何映射到节点 scrypt 包 (https://www.npmjs.com/package/scrypt)。 Firebase 参数的格式如下:

hash_config: {
    algorithm: SCRYPT,
    base64_signer_key: asdf1234
    base64_salt_seperator: xxxx
    rounds: 123456
    mem_cost: 098765
}

这些应该以某种方式映射到 nodejs scrypt 参数,但我找不到相似之处。任何帮助将不胜感激!

【问题讨论】:

    标签: node.js firebase hash firebase-authentication scrypt


    【解决方案1】:

    我在迁移我的 firebase 用户时遇到了同样的问题。我也一直在与 firebase 技术支持来回交流——他们说很遗憾,他们无法共享他们的哈希库。作为替代方案,我已将用户迁移到我的新数据库,并在有人登录时检查“盐”变量。​​如果盐存在,则查询 firebase,否则查询您自己的数据库。

    【讨论】:

    • 我们已更改此政策 - 您可以查看 github 上的哈希库:github.com/firebase/scrypt
    【解决方案2】:

    Firebase 使用自定义版本的 Scrypt 进行用户身份验证。我们从标准 scrypt 中获取派生密钥,然后使用“pepper”对其进行 AES 加密,并与散列密码一起存储。

    我们刚刚开源了 Firebase 的版本,以便您可以进行自己的密码验证。查看github.com/firebase/scrypt

    【讨论】:

    • 嘿@Kiana,你能解释一下如何让这个算法与nodejs一起工作吗?我在 nodejs 中找不到任何 firebase/scrypt 的用法。我找不到一种方法来使用标准 scrypt 包和提供的密码哈希参数 firebase。而且我不知道 scrypt 使用什么盐,以及 AES 使用什么秘密。任何具有适当数据的精确 nodejs 示例将不胜感激。谢谢
    • 抱歉,我们没有任何 nodejs 版本的代码。 AES 密钥位于 firebase 控制台 (firebase.google.com/docs/auth/admin/…) 的密码哈希参数中。当您执行 firebase auth:export 时,scrypt salt 会与密码一起导出。
    【解决方案3】:

    为使 scrypt 正常工作而苦苦挣扎。 https://github.com/firebase/scrypt#password-hashing 这里的文档看起来已经过时了。决定分享我们在团队中如何正确做事的知识。

    工作指令

    scrypt {key} {salt} {saltSeparator} {rounds} {memcost} [-P]
    

    不需要盐+分隔符连接和base64操作。

    【讨论】:

      猜你喜欢
      • 2018-05-28
      • 2019-05-27
      • 1970-01-01
      • 2011-09-20
      • 2020-11-10
      • 2012-01-23
      • 2018-10-28
      • 2011-06-18
      • 2019-08-27
      相关资源
      最近更新 更多