如何为auth设置hash-key选项:在默认的auth:export in firebase中导入?

时间:2017-07-30 21:27:02

标签: firebase firebase-authentication firebase-tools

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

firebase auth:export my_users.json

导出文件中的密码应使用SCRYPT进行哈希处理,因为文档说明:

  

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

我的哈希键和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命令没有接受任何参数? ...

提前致谢

2 个答案:

答案 0 :(得分:12)

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

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

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

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

password hash parameters

单击此菜单项以及执行此操作所需的所有设置 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>

答案 1 :(得分:0)

请参阅Firebase文档-“ Firebase身份验证密码哈希”: https://firebaseopensource.com/projects/firebase/scrypt/

  

查找密码哈希参数

     

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

很不幸,似乎没有选择通过cli获取哈希参数。因此,我想GUI是唯一的方法(如their answer上的Geoffrey Wall所述)。