비밀번호 재설정 없이 사용자 가져오기

ID 마이그레이션 가이드는 항상 똑같은 이야기를 합니다. 사용자가 반드시 비밀번호를 재설정해야 한다고 말이죠. 하지만 이것은 규칙이 아니라 선택 사항입니다. 대부분의 도구는 올바른 길 대신 쉬운 길을 택합니다.

재설정 없이도 사용자를 마이그레이션할 수 있습니다. 기존 비밀번호 해시를 검증하기만 하면 됩니다. 기존 해시를 보유하고 있고 새 시스템이 이를 읽을 수 있다면, 마이그레이션 과정은 사용자에게 전혀 드러나지 않습니다.

비밀번호 해시는 비밀이 아닙니다. Bcrypt는 Bcrypt입니다. 자체적인 솔트(salt)와 비용 인자(cost factor)를 포함하고 있습니다. Bcrypt를 사용하는 시스템이라면 무엇이든 이를 검증할 수 있습니다. PBKDF2도 같은 방식으로 작동합니다. 해시가 있다면 실제 비밀번호를 알지 못해도 해당 비밀번호가 맞는지 확인할 수 있습니다.

시간을 절약하려면 지연 마이그레이션(lazy migration)을 사용하세요.

  • 기존 해시를 새 시스템으로 가져옵니다.
  • 사용자가 로그인할 때 해시를 검증합니다.
  • 즉시 새로운 형식으로 교체합니다.

몇 주가 지나면 데이터베이스는 스스로 업데이트됩니다. 비밀번호 재설정 이메일도, 고객 지원 티켓도 발생하지 않습니다.

소스마다 제공하는 형식이 다릅니다.

Self-hosted Duende 또는 ASP.NET Identity: 이들은 V3 PBKDF2 또는 bcrypt를 사용합니다. 새 시스템에서 이를 쉽게 검증하고 다시 해싱할 수 있습니다. 매우 깔끔한 프로세스입니다.

Auth0: Auth0는 bcrypt를 사용합니다. 직접 가져올 수 있습니다. 하지만 표준 API를 통해서는 가져올 수 없습니다. 보안상의 이유로 Auth0는 API를 통해 해시를 반환하지 않습니다. 고객 지원팀에 대량 내보내기(bulk export) 파일을 요청해야 합니다. 이 파일에는 bcrypt 해시가 포함되어 있습니다. 이 파일을 사용하여 마이그레이션이 사용자에게 드러나지 않도록 하세요.

해시를 가져올 수 없다면 사용자가 새 비밀번호를 설정해야 합니다. 이것은 정직한 차선책입니다. 피할 수 있다면 도구가 강제로 재설정을 요구하게 두지 마세요.

강제 재설정은 다음과 같은 문제를 일으킵니다:

  • 높은 고객 지원 부하를 초래합니다.
  • 사용자들이 피싱 이메일을 신뢰하도록 길들입니다.
  • 조용한 변화를 시끄러운 문제로 만듭니다.

훌륭한 마이그레이션은 아무 일도 일어나지 않은 것처럼 느껴져야 합니다. 사용자에게 비밀번호 재설정을 요구하기 전에, 기존 해시를 가져올 수 있는지 먼저 확인하세요.

Source: https://dev.to/authagonal/importing-users-without-a-password-reset-5h1j