Importowanie użytkowników bez resetowania haseł

Przewodniki dotyczące migracji tożsamości zawsze mówią to samo. Twierdzą, że użytkownicy muszą zresetować swoje hasła. To nie jest zasada. To wybór. Większość narzędzi wybiera łatwiejszą drogę zamiast tej właściwej.

Możesz przeprowadzić migrację użytkowników bez resetowania haseł. Musisz jedynie zweryfikować istniejące skróty (hashe) haseł. Jeśli posiadasz stare skróty i Twój nowy system potrafi je odczytać, migracja pozostanie niezauważalna.

Skrót hasła nie jest tajemnicą. Bcrypt to bcrypt. Zawiera on własną sól i współczynnik kosztu (cost factor). Każdy system używający bcrypt może go zweryfikować. PBKDF2 działa w ten sam sposób. Jeśli masz skrót, możesz sprawdzić hasło względem niego, nie znając faktycznego hasła.

Skorzystaj z leniwej migracji (lazy migration), aby zaoszczędzić czas.

  • Przenieś stary skrót do nowego systemu.
  • Zweryfikuj skrót podczas logowania użytkownika.
  • Natychmiast zastąp go nowym formatem.

W ciągu kilku tygodni Twoja baza danych sama się zaktualizuje. Nie wyślesz ani jednego e-maila z resetowaniem hasła i nie otrzymasz ani jednego zgłoszenia do wsparcia.

Różne źródła dostarczają różne formaty.

Samodzielnie hostowane Duende lub ASP.NET Identity: Używają one V3 PBKDF2 lub bcrypt. Nowy system może je łatwo zweryfikować i ponownie skrótować. Jest to czysty proces.

Auth0: Używa ono bcrypt. Możesz je zaimportować bezpośrednio. Jednak nie można ich uzyskać przez standardowe API. Ze względów bezpieczeństwa Auth0 nie zwraca skrótów przez API. Musisz poprosić ich wsparcie o plik eksportu masowego (bulk export). Plik ten zawiera skróty bcrypt. Wykorzystaj ten plik, aby migracja pozostała niezauważalna.

Jeśli nie możesz uzyskać skrótów, użytkownicy muszą ustawić nowe hasło. Jest to uczciwe rozwiązanie awaryjne. Nie pozwól, aby narzędzie wymusiło na Tobie reset, jeśli możesz tego uniknąć.

Wymuszone resety powodują problemy:

  • Generują duże obciążenie działu wsparcia.
  • Przyzwyczajają użytkowników do ufania e-mailom phishingowym.
  • Zmieniają cichą zmianę w głośny problem.

Dobra migracja powinna sprawiać wrażenie, jakby nic się nie stało. Zanim poprosisz użytkowników o zresetowanie haseł, sprawdź, czy możesz uzyskać stare skróty.

Źródło: https://dev.to/authagonal/importing-users-without-a-password-reset-5h1j