Я пытаюсь перенести пользователей из Drupal 8 в аутентификацию firebase.
Я пытался следовать инструкциям на https://firebase.google.com/docs/auth/admin/import-users#import_users_with_md5_sha_and_pbkdf_hashed_passwords.
Пользователи успешно импортируют, но пароль не работает, когда я пытаюсь войти в систему. После обращения к коду Drupal у меня возникает ощущение, что механизм хеширования sha512, предоставляемый firebase, не выполняет те же действия, что и drupal делает, чтобы определить хэш пароля.
Данные в базе данных drupal для одного пользователя (это данные dev, а не реальный пользователь)
пароль: $ S $ EF // ORKHHZKG9L4UEUUNycm0v5HatfjQxkxbKn19BiYMsPxi3u68
Прочитав код друпала, я определил следующее
$ S $ = SHA512
"E" = 16 раундов
"F // ORKH" = соль
"HZKG9L4UEUUNycm0v5HatfjQxkxbKn19BiYMsPxi3u68" = хэш
Это было взято отсюда: https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Password%21PhpassHashedPassword.php/class/PhpassHashedPassword/8.7.x
Соответствующий код Go для импорта:
users := []*auth.UserToImport{
(&auth.UserToImport{}).
UID("00048ebbb178d47f674f48485205235c").
Email("CPIZFTPX@mailinator.com").
PasswordHash([]byte("HZKG9L4UEUUNycm0v5HatfjQxkxbKn19BiYMsPxi3u68")).
PasswordSalt([]byte("F//ORKH")),
}
h := hash.SHA512{
Rounds: 16,
}
result, err := client.ImportUsers(context.Background(), users, auth.WithHash(h))
Итак ... учитывая все вышесказанное, я думаю, проблема в том, что код drupal усекает строку, которая фактически хранится в базе данных, до 55 символов. Вы можете увидеть это в последней строке метода crypt
в коде drupal (URL вставлен выше).
Кто-нибудь успешно перенес пользователей Drupal 8 в Firebase? Если так, я хотел бы знать, какой шаг я пропускаю. Если нет, то какое-то подтверждение моих находок поможет мне в здравом уме.