Импорт пользователей без сброса паролей
Руководства по миграции учетных данных всегда говорят одно и то же. В них утверждается, что пользователи должны сбросить свои пароли. Но это не правило, а выбор. Большинство инструментов выбирают легкий путь вместо правильного.
Вы можете мигрировать пользователей без сброса. Вам просто нужно проверить существующие хеши паролей. Если у вас есть старые хеши и ваша новая система может их прочитать, переход останется незаметным.
Хеш пароля — это не секрет. Bcrypt — это bcrypt. Он содержит собственную соль и фактор стоимости (cost factor). Любая система, использующая bcrypt, может его проверить. PBKDF2 работает аналогичным образом. Если у вас есть хеш, вы можете проверить пароль по нему, не зная самого пароля.
Используйте «ленивую миграцию» (lazy migration), чтобы сэкономить время.
- Перенесите старый хеш в новую систему.
- Проверяйте хеш при входе пользователя в систему.
- Сразу же заменяйте его на новый формат.
За несколько недель ваша база данных обновится сама собой. Вы не получите ни одного письма о сбросе пароля и ни одной заявки в службу поддержки.
Разные источники предоставляют разные форматы.
Self-hosted Duende или ASP.NET Identity: Они используют V3 PBKDF2 или bcrypt. Новая система может легко проверить и перехешировать их. Это чистый процесс.
Auth0: Они используют bcrypt. Вы можете импортировать их напрямую. Однако их нельзя получить через стандартный API. В целях безопасности Auth0 не возвращает хеши через API. Вам нужно запросить файл массового экспорта (bulk export) в их службе поддержки. Этот файл содержит хеши bcrypt. Используйте этот файл, чтобы миграция осталась незаметной.
Если вы не можете получить хеши, пользователям придется установить новый пароль. Это честный запасной вариант. Не позволяйте инструментам принудительно сбрасывать пароли, если этого можно избежать.
Принудительный сброс создает проблемы:
- Он создает высокую нагрузку на службу поддержки.
- Он приучает пользователей доверять фишинговым письмам.
- Он превращает незаметное изменение в громкую проблему.
Хорошая миграция должна ощущаться так, будто ничего не произошло. Прежде чем просить пользователей сбросить пароли, узнайте, можете ли вы получить старые хеши.
Источник: https://dev.to/authagonal/importing-users-without-a-password-reset-5h1j
