关于javascript:将用户导入Firebase身份验证后无法登录

Unable to login after importing user into Firebase Authentication

我们正在将用户密码从旧数据库迁移到Firebase Auth中,这些用户的密码使用SHA512进行了哈希处理。

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

Invalid password or this user has no password

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

密码:测试
salt:salt

在SHA512中哈希的密码salt:

1
6c838e934e3feefae6cfa53af11375d4954f85c6f5ed888c02cd7806a71696d1cb449f2be78e9e6ea301a95c81f28ad8766f3ae582f9beaac33c7dc2b7ba9187

Base-64编码的密码salt:

1
NmM4MzhlOTM0ZTNmZWVmYWU2Y2ZhNTNhZjExMzc1ZDQ5NTRmODVjNmY1ZWQ4ODhjMDJjZDc4MDZhNzE2OTZkMWNiNDQ5ZjJiZTc4ZTllNmVhMzAxYTk1YzgxZjI4YWQ4NzY2ZjNhZTU4MmY5YmVhYWMzM2M3ZGMyYjdiYTkxODc=

Base-64编码的salt:

1
c2FsdA==

User.json:

1
2
3
4
5
6
7
8
9
10
11
{
 "users": [
    {
     "localId":"123",
     "emailVerified": true,
     "email":"[email protected]",
     "passwordHash":"NmM4MzhlOTM0ZTNmZWVmYWU2Y2ZhNTNhZjExMzc1ZDQ5NTRmODVjNmY1ZWQ4ODhjMDJjZDc4MDZhNzE2OTZkMWNiNDQ5ZjJiZTc4ZTllNmVhMzAxYTk1YzgxZjI4YWQ4NzY2ZjNhZTU4MmY5YmVhYWMzM2M3ZGMyYjdiYTkxODc=",
     "salt":"c2FsdA=="
    }
  ]
}

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

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

请让我们知道我们在这里缺少什么

谢谢


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

1
Console > Project > Authentication > Password hash paremeter

导入命令将是这样的。

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

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

  • 创建密码哈希和salt
1
2
3
4
  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
1
2
3
4
5
6
7
8
9
10
11
12
13
{
 "users": [
    {
     "localId":"166666",
     "email":"[email protected]",
     "emailVerified": false,
     "passwordHash":"5NL5SaQBwE6c0L1BDjHW+BtBOXQVH8RYwY0tGGw3khk=",
     "createdAt":"1613525311156",
     "salt":"c2FsdA==",
     "providerUserInfo": []
    }
  ]
}
  • Firebase CLI
1
firebase auth:import import_account_sha256.json --hash-algo=SHA256 --rounds=1 --hash-input-order=PASSWORD_FIRST

  • 例子
    enter