将用户导入Firebase身份验证后无法登录

时间:2018-05-02 18:00:50

标签: javascript firebase firebase-authentication

我们正在将用户从使用SHA512哈希密码的旧版数据库迁移到Firebase Auth。

我们可以成功将用户导入Firebase。但是,当我们尝试通过Firebase身份验证再次登录这些用户时,会出现错误:

  

密码无效或此用户没有密码

以下是代码结构,用于导入用户的命令以及我们正在使用的user.json的详细信息。

密码:测试 盐:盐

SHA512中的密码+盐哈希:

6c838e934e3feefae6cfa53af11375d4954f85c6f5ed888c02cd7806a71696d1cb449f2be78e9e6ea301a95c81f28ad8766f3ae582f9beaac33c7dc2b7ba9187

Base-64编码密码+ salt:

NmM4MzhlOTM0ZTNmZWVmYWU2Y2ZhNTNhZjExMzc1ZDQ5NTRmODVjNmY1ZWQ4ODhjMDJjZDc4MDZhNzE2OTZkMWNiNDQ5ZjJiZTc4ZTllNmVhMzAxYTk1YzgxZjI4YWQ4NzY2ZjNhZTU4MmY5YmVhYWMzM2M3ZGMyYjdiYTkxODc=

Base-64编码盐:

c2FsdA==

User.json:

{
  "users": [
    {
      "localId": "123",
      "emailVerified": true,
      "email": "test@demo.com",
      "passwordHash": "NmM4MzhlOTM0ZTNmZWVmYWU2Y2ZhNTNhZjExMzc1ZDQ5NTRmODVjNmY1ZWQ4ODhjMDJjZDc4MDZhNzE2OTZkMWNiNDQ5ZjJiZTc4ZTllNmVhMzAxYTk1YzgxZjI4YWQ4NzY2ZjNhZTU4MmY5YmVhYWMzM2M3ZGMyYjdiYTkxODc=",
      "salt": "c2FsdA=="
    }
  ]
}

用于导入user.json的Firebase命令:

firebase --project=projectname auth:import user.json --hash-algo=SHA512 --rounds=80

请告诉我们这里缺少的是什么

谢谢

2 个答案:

答案 0 :(得分:0)

您需要添加哈希键和盐分隔符。您可以在此处找到这些详细信息。

Console > Project > Authentication > Password hash paremeter

导入命令将是这样的。

firebase auth:import dev-accounts.json --hash-algo=scrypt --rounds=8 --hash-key="your_hash_key" --salt-separator="your_salt_separator" --mem-cost=14

答案 1 :(得分:0)

我使用了 SHA256,遇到了同样的问题,最后使用以下 Python 代码解决了这个问题。 希望这些代码对您有所帮助。

  • 创建密码哈希和盐
  password_hash_base_64 = base64.standard_b64encode(hashlib.sha256("123456salt").digest())
  salt_base64 = base64.standard_b64encode("salt")
  print password_hash_base_64
  print salt_base64
  • import_account_sha256.json
{
  "users": [
    {
      "localId": "166666",
      "email": "166666@qq.com",
      "emailVerified": false,
      "passwordHash": "5NL5SaQBwE6c0L1BDjHW+BtBOXQVH8RYwY0tGGw3khk=",
      "createdAt": "1613525311156",
      "salt": "c2FsdA==",
      "providerUserInfo": []
    }
  ]
}
  • Firebase CLI
firebase auth:import import_account_sha256.json --hash-algo=SHA256 --rounds=1 --hash-input-order=PASSWORD_FIRST
  • 示例 enter image description here