Использование параметров Firebase SCrypt в пакете nodejs scrypt
Я боролся с этим в течение некоторого времени, надеюсь, кто-то делал это раньше и может помочь мне на моем пути. Я обратился к сотрудникам Firebase с просьбой указать параметры scrypt, чтобы перенести нашу аутентификацию пользователей с Firebase на наш собственный сервер. Теперь я получил эти параметры, но понятия не имею, как они должны отображаться в направлении пакета scrypt узла ( https://www.npmjs.com/package/scrypt). Параметры Firebase имеют следующий формат:
hash_config: {
algorithm: SCRYPT,
base64_signer_key: asdf1234
base64_salt_seperator: xxxx
rounds: 123456
mem_cost: 098765
}
Каким-то образом они должны отображаться на параметры скрипта nodejs, но я не могу найти сходства. Любая помощь приветствуется!
3 ответа
Много боролся с получением скриптовой работы должным образом. Документация отсюда https://github.com/firebase/scrypt выглядит устаревшей. Решили поделиться знаниями, как мы правильно поступили в нашей команде.
Рабочая команда
scrypt {key} {salt} {saltSeparator} {rounds} {memcost} [-P]
Нет необходимости в конкатенации соль + разделитель и манипуляции base64.
Firebase использует пользовательскую версию Scrypt для аутентификации пользователей. Мы берем производный ключ от стандартного scrypt, а затем AES зашифровываем его "перцем", сохраненным с хешированным паролем.
Мы просто открываем исходную версию Firebase, чтобы вы могли самостоятельно проверить пароль. Проверьте это на http://github.com/firebase/scrypt
Я столкнулся с той же проблемой при миграции моих пользователей Firebase. Я также возвращался туда и обратно с технической поддержкой Firebase - они сказали, что, к сожалению, не могут поделиться своими библиотеками хеширования. В качестве альтернативы, я перенес своих пользователей на новую базу данных и проверял наличие переменной "соль" всякий раз, когда кто-то входит в систему. Если соль существует, то запрашивайте базу данных Firebase, в противном случае запросите свою собственную базу данных.