Firebase Auth импортирует хэш SHA256: не удается войти с паролем после импорта

#firebase #firebase-authentication

#firebase #firebase-аутентификация

Вопрос:

Я пытаюсь перенести пользователей (используя firebase-admin@8.13.0 ) в firebase auth, следуя этому руководству: https://firebase.google.com/docs/auth/admin/import-users#import_users_with_md5_sha_and_pbkdf_hashed_passwords

В старой системе пароли хэшировались в php:

 $Password = hash('sha256', $Password);
  

Я запускаю этот код для импорта пользователей в firebase:

 const res = await admin.auth().importUsers([{
  uid: 'ABC123',
  email: 'tester@test.com',
  passwordHash: Buffer.from('5457ae6b180556bc65b423ba3a36124ec44f6cbec7da84e483daa2a46dec3f97') 
}], {
  hash: {
    algorithm: 'SHA256',
    rounds: 1
  }
});
  

Импорт завершается успешно, но я не могу войти в систему, используя тот же пароль (LeeT1337).

Также, когда я экспортирую всех пользователей, запускаю

 firebase auth:export auth-export.json --format json
  

импортированный пользователь, в отличие от всех остальных, не имеет passwordHash свойства.

Я также сначала попробовал кодирование хэша в base64 (поскольку это предлагается в старых сообщениях стека, но больше не в документах).

Альтернативно, я попытался импортировать через cli (firebase-tools@8.13.1 ) с:

 {
  "users": [
    {
      "localId": "ABC123",
      "email": "tester@test.com",
      "passwordHash": "NTQ1N2FlNmIxODA1NTZiYzY1YjQyM2JhM2EzNjEyNGVjNDRmNmNiZWM3ZGE4NGU0ODNkYWEyYTQ2ZGVjM2Y5Nw=="
    }
  ]
}
  

и

 firebase auth:import users-for-import.json --hash-algo=SHA256 --rounds=1
  

но получил тот же результат: импорт работает, вход в систему — нет.

Ответ №1:

 Buffer.from('5457ae6b180556bc65b423ba3a36124ec44f6cbec7da84e483daa2a46dec3f97')
  

необходимо изменить на

 Buffer.from('5457ae6b180556bc65b423ba3a36124ec44f6cbec7da84e483daa2a46dec3f97', 'hex')