인프런 커뮤니티 질문&답변

김진용님의 프로필 이미지

작성한 질문수

코드로 배우는 React with 스프링부트 API서버

리액트 사용자 정보 수정 완료

소셜로그인시 이메일 중복 관련 처리 문의

24.03.27 16:55 작성

·

786

0

소셜로그인 강의까지 봤는데요,

강의에 있는 프로세스는

소셜로그인시 이메일을 가져와서 DB에 저장이 되어있지 않으면 카카오이메일로 회원가입을 시키고, DB에 저장이 되어있으면 비밀번호 없이 해당 계정으로 로그인이 되게끔 만드는 프로세스로 이해 했습니다.

그런데, 기존에 회원가입을 하지 않은 사람이 소셜로그인을 할 때 이미 기존에 가입되어 있는 이메일이 있다면 다른사람 계정을 비밀번호 없이 로그인 할 수 있게되는게 지금 구현한 상황에서는 맞는거죠?

 

ex) 기존에 회원가입한 'A' 의 이메일이 test@AAA.com 일 때

신규 유입된 사람 'B'의 카카오계정 이메일이 test@AAA.com 인 경우

 

위와 같은 경우를 방지하려면 소셜로그인시(최초로그인) 회원가입을 시킬 때 이메일 중복체크를 하고 중복되어있다면 다른 이메일 사용을 권유 해야되는식으로 처리를 해야 하는건가요?

답변 1

0

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

2024. 03. 27. 19:46


A는 구글을 이용해서 로그인 했는데 a@naver.com 으로 이메일이 지정되어 있었다.

B는 네이버를 이용했는데 a@naver.com 이메일을 이용한다.

--우선 이 경우 B는 정상적인 사용자로 간주하고, A는 수정이 필요한 비정상적인 사용자로 봐야 합니다.

(B는 진짜 네이버 사용자니까요)

 

이런 문제를 막기 위해서 요즘 주로 전화번호 인증을 하긴 합니다.

 

이런 상황을 막으려면 사용한 소셜 서비스 까지 기록해 두면 좋을 듯 합니다. 로그인 시에 사용하는 소셜 서비스까지 같이 체크하는 방식으로요(예제에서야 카카오만 했기 때문에 이것을 구현할 필요가 없었습니다만)

 

A는 구글 이었고, B는 네이버니까..B가 최초로 로그인(회원가입)할 때

'구글'에서 이메일로 당신 주소를 쓰는 사람이 있다는 사실을

알려주는게 좋을 듯 합니다.

 

B의 경우는 자신의 이메일을 정상적으로 사용하는 사람이기 때문에

B에게 메일을 통해서 회원 정보를 제어할 수 있는 특별한 링크 등을 전송해 주는게 맞을 듯 합니다.

 

현재 '이메일'만을 PK로 이용하는 방식 대신에 '이메일 + 소셜 서비스'까지 복합 PK를 고민하는게 어떨까 싶네요

 

김진용님의 프로필 이미지
김진용
질문자

2024. 03. 28. 11:21

답변 감사합니다!

 

그럼 지금은 소셜로그인을 하고나면 일반 로그인버튼으로도 로그인을 할 수 있게 되어있는데 여러가지 소셜을 사용하기 위해 복합PK 로 설계하게 되면 일반 로그인 버튼으로는 로그인 할 수 없게 되는건가요?

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

2024. 03. 28. 11:35

^^ 일이 점점 커지네요

소셜 로그인으로 가입한 사이트를 직접 입력해서 로그인하는 경우는 거의 없긴 합니다만..

만일 그렇게 한다면 말씀하신대로 일반 로그인은 못하게 설계하는게 나을듯 합니다.