Search
🔐

임시비밀번호 발급에 대한 고찰

유형
브레인스토밍
이벤트 시간
2023/09/08
참석자
김시은
김시은
신세인[졸업생 / 이탈리아어과] ‍
신세인[졸업생 / 이탈리아어과] ‍
1 more property

주제

임시비밀번호 발급을 할때 멤버의 유일성을 어떻게 해결할 것인가?

이슈

임시토큰을 생성할때 이메일과, 닉네임을 기준으로 멤버를 찾고 그멤버를 이용합니다. 하지만 이 멤버의 유일성이 문제입니다. 현재 각 프로바이더마다 이메일이 중복 가능하고, 닉네임 또한 수정하면 유일한 멤버가 나오지 않습니다. 준형님이 걱정하는 부분은 이메일 중복이기 때문에 제 3자가 특정 유저의 비밀번호를 바꿀 수 있지 않나? 입니다. 이는 보안 이슈이기 때문에 꼼꼼히 생각해야 할 필요가 있습니다.
비밀번호 주고받을때의 암호화? ⇒ 프팀 문의

의견

@신세인[졸업생 / 이탈리아어과] ‍
소셜로그인의 경우 로그인하기 전 비밀번호 찾기를 수행하지 않는 걸로 알고 있습니다 (타 사이트도 그런 것 같아용)
왜냐면 소셜로그인에서 한번 로그인에 성공하면 그 다음부터는 이멜과 비번을 입력하지 않아도 버튼클릭 한번만으로 로그인이 되어버리니까요..!
그래서 실제로 프로젝트에서 oauth2 테스트 시에 네이버 계정 로그인이 성공한 뒤 다시 처음부터 이메일과 비밀번호를 치고 하려면
네이버 계정 센터에 들어가 연동되어있는 어플리케이션을 지우고 시작해야 했습니다.
그래서 소셜 로그인일 경우는 로그인 시 비밀번호 변경이 가능하도록 열어두고 임시 비밀번호 발급에 대한 부분은 그냥 놔둬도 되지 않을까요..?
그냥 로그인일 경우에만 provider가 없는 이멜을 찾아 유일성을 검사하구요..!
@김시은
소셜 로그인 유저
이메일: wldsmtldsm65@gmail.com
userId: 1
provider: google
로컬 로그인 유저
이메일: wldsmtldsm65@gmail.com
userId: 2
provider: local
일단 소셜 로그인 유저는 애초에 비밀번호 변경 버튼을 활성화 하면 안됩니다. (프로필 페이지용) 그럼에도 불구하고 비밀번호 변경을 할수 있게 되어버린다면…  비밀번호 변경 로직에서 프로바이더에 따라 익셉션 터뜨려야 겠네여 이건 제가 수정하겠습니다요~!
아 헷갈려

로직

1.
유저가 비밀번호 찾기 버튼을 누르고 이메일을 입력한다.
2.
이메일과 프로바이더 “local” 을 기반으로 유일한 멤버를 찾는다.
3.
그 멤버의 userId 로 임시 토큰을 만들고, 비밀번호 변경 링크를 메일로 보낸다.
4.
링크를 클릭하여 유저가 비밀번호를 바꾼다.
5.
토큰에서 유저아이디를 꺼내어 해당 유저의 비밀번호를 변경한다.
이런 로직일 경우, 준형님 말대로 제 3자가 비밀번호를 변경 시도는 할 수 있지만 해당 이메일로 로그인을 해야 이 링크를 볼 수 있기 때문에 괜찮지 않을까요? 구글이나 네이버가 털리지 않는이상…