【问题标题】:How to set hash-key option for auth:import after default auth:export in firebase?如何在默认 auth:export 后为 auth:import 设置哈希键选项?
【发布时间】:2018-01-06 09:01:05
【问题描述】:

我已经让我的用户在 CLI 中导出:

firebase auth:export my_users.json

导出文件中的密码应使用 SCRYPT 进行哈希处理,因为正如文档所述:

auth:export 命令仅导出使用 scrypt 算法散列的密码,Firebase 后端使用该算法。使用其他算法散列密码的帐户记录使用空的 passwordHash 和 salt 字段导出。从文件导入用户记录后,项目可能会使用其他算法对密码进行哈希处理,因为只有在导入的用户首次登录时,密码才会使用 scrypt 重新哈希处理

我的 hash-key 和 salt 字段在结果中不为空。 另外,我知道我的所有用户都至少登录过一次。

现在,当我尝试导入 my_users.json 时:

firebase auth:import --hash-algo=SCRYPT --rounds=1 my_users.json

我收到以下错误:

Must provide hash key(base64 encoded) for hash algorithm SCRYPT

但是我应该将 --hash-key 设置为什么,因为 auth:export 命令没有使用任何参数? ...

提前致谢

【问题讨论】:

  • 目前我发现的唯一解决方法是要求用户在导入后重置密码,正如 Bryan Lewis 也提到的那样。唯一的好处是他们可以设置与以前相同的密码:|
  • 我刚刚尝试做同样的事情 - 默认导出用户然后导入回同一个 firebase 项目,我发现在导入命令中不提供哈希算法导致导入正常工作,尽管该工具打印此警告消息“未指定哈希算法。无法导入密码用户。”。这仅在导入到进行导出的同一项目时才有效。

标签: firebase firebase-authentication firebase-tools


【解决方案1】:

参考 Firebase 文档 - “Firebase Authentication Password Hashing”: https://firebaseopensource.com/projects/firebase/scrypt/

查找密码哈希参数

Firebase 为每个 Firebase 项目生成唯一的密码哈希参数。要访问这些参数,请导航到 Firebase 控制台中“身份验证”部分的“用户”标签,然后从用户表右上角的下拉菜单中选择“密码哈希参数”。

不幸的是,似乎没有通过 cli 获取哈希参数的选项。所以,我想 GUI 是唯一的方法(正如 Geoffrey Wall 在their answer 中提到的那样)。

【讨论】:

    【解决方案2】:

    所以您现在可以从 Firebase 控制台 GUI 获取哈希键和盐信息。 由于某种原因,我不得不在 chrome 中进入隐身模式(firebase 支持建议这样做)。

    然后我可以在隐身浏览器中登录我的 Firebase 控制台。

    (请注意,您需要使用正在复制用户的 firebase 实例 来自,而不是您将用户复制到的那个)

    您单击身份验证 -> 用户 然后单击重新加载按钮旁边的三个垂直点,将显示一个弹出菜单,其中包含一个菜单项:“密码哈希参数”。

    单击此菜单项以及执行此操作所需的所有设置 firebase auth:import 命令将出现。 这是我看到的:

    hash_config {
      algorithm: SCRYPT,
      base64_signer_key: <long string of random characters>,
      base64_salt_separator: <short string of random characters>,
      rounds: 8,
      mem_cost: 14,
    }
    

    然后我可以成功执行命令

    firebase auth:import ./users.json --hash-algo=scrypt --rounds=8 --mem-cost=14 --hash-key=<long string of random characters> --salt-separator=<short string of random characters>
    

    【讨论】:

    • 你用什么工具得到了进入users.json的passwordHash字段的字符串?
    • @nalply 您可以使用此 SO 帖子中讨论的 firebase-cli:stackoverflow.com/questions/26801163/…
    • 不,这不是我想问的。让我再问问。 JSON 文件有一个字段“passwordHash”。您是如何获得该字段的值的?换句话说:"passwordHash": &lt;long string of random characters&gt;:如何得到那个长字符串?
    • 不,这不是我想问的。让我再问问。我已经有了密码哈希参数。但我不知道如何使用密码哈希参数对密码进行哈希处理。无论我尝试过什么,Firebase 身份验证都没有接受它。
    • @nalply 你得到这个解决方案了吗?我面临同样的问题。我想要一个通用密码,即我要导入的所有新用户的“123456789”。但是如何告诉我找不到的firebase?
    猜你喜欢
    • 2016-01-31
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    相关资源
    最近更新 更多