使用PBKDF2哈希导入用户到Firebase



我试图使用firebase-adminSDK的Node脚本从MongoDB数据库导入用户到Firebase Auth。在遗留系统中,密码使用PBKDF2 SHA25625000迭代进行散列,并以十六进制字符串的形式存储在数据库中,其中单独的salt也存储为十六进制字符串。

const users = [{
uid: <idFromLegacyDb>,
email: <emailFromLegacyDb>,
passwordHash: Buffer.from('passwordHashFromLegacyDb', 'hex'),
passwordSalt: Buffer.from('saltFromLegacyDb', 'hex'),
}]
const importResult = await auth.importUsers(users, {
hash: {
algorithm: 'PBKDF2_SHA256',
rounds: 25000,
}
})
console.log(importResult)

导入成功完成,但从前端登录返回一个错误的密码,并且Firebase认证中的用户条目存在,但没有任何passwordHash字段。

知道为什么登录失败吗?似乎找不到auth的任何日志来接近问题。谢谢!

好的,解决了。

像大多数其他类似的问题一样,它原来是编码的问题。也许特定于我的旧设置,但这里是正确的代码:
const users = [{
uid: <idFromLegacyDb>,
email: <emailFromLegacyDb>,
passwordHash: Buffer.from('passwordHashFromLegacyDb', 'hex'),
passwordSalt: Buffer.from('saltFromLegacyDb', 'utf8'), // salt buffer should be decoded as utf8
}]
const importResult = await auth.importUsers(users, {
hash: {
algorithm: 'PBKDF2_SHA256',
rounds: 25000,
}
})
console.log(importResult)

最新更新