我们正在将用户从使用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
请告诉我们这里缺少的是什么
谢谢
答案 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
{
"users": [
{
"localId": "166666",
"email": "166666@qq.com",
"emailVerified": false,
"passwordHash": "5NL5SaQBwE6c0L1BDjHW+BtBOXQVH8RYwY0tGGw3khk=",
"createdAt": "1613525311156",
"salt": "c2FsdA==",
"providerUserInfo": []
}
]
}
firebase auth:import import_account_sha256.json --hash-algo=SHA256 --rounds=1 --hash-input-order=PASSWORD_FIRST