Імпорт користувачів без скидання паролів
Посібники з міграції ідентифікаційних даних завжди кажуть одне й те саме. Вони стверджують, що користувачі мають скинути свої паролі. Але це не правило, а вибір. Більшість інструментів обирають легший шлях замість правильного.
Ви можете мігрувати користувачів без скидання паролів. Вам просто потрібно перевірити наявні хеші паролів. Якщо у вас є старі хеші та ваша нова система може їх зчитувати, перехід залишиться непомітним.
Хеш пароля не є секретом. Bcrypt — це bcrypt. Він містить власну сіль (salt) та фактор вартості (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
