OAuth2 가입을 구현하는 과정에서
중복 가입을 막아야 하는 문제가 발생했다.
Plaything에선 구글 로그인, 애플 로그인을 제공한다.
추후에 자체 회원가입을 추가할 가능성이 적긴 하지만 있기도 하다.
그런데, 구글 계정에서 가입을 하고 애플 계정에서 가입을 하는 경우
중복 가입 문제가 발생하니 이를 어떻게 처리할지 결정을 해야했다.
일반적인 서비스들에서는 중복 가입을 막는 경우는 많지 않은 거 같다.
다만, 우리 서비스는 데이팅 서비스인만큼 중복 가입을 막는 게 좋다는 의견이 나왔다.
이런 경우는 보통 CI라고 하는 걸 사용한다고 한다.
CI(Connecting Information)는 본인확인기관이 주민등록번호를 암호화하여 생성한 정보로, 개인정보에 해당한다. 본인인증 서비스를 활용해서 신원을 확인하고, 그걸 저장해서 식별하는 개념이다.
다만, 우리는 본인인증 서비스를 활용하지 않고 있어서 이를 활용할 수 없었다.
보통은 이메일 주소, 전화번호, 이름을 저장해서 중복 가입을 막을 수 있겠지만 이런 개인정보를 DB에 저장한다는 거 자체가 리스크가 너무 크다고 생각한다. 아무리 암호화를 한다고 해도 말이다.
보통 이런 소셜 로그인 방식을 쓰는 이유는 보안 관련 리스크를 줄이기 위해서다. 그니까, 서비스를 운영하는 측에서 개인정보를 최대한 적게 가져가면서 개인 신원을 파악할 수 있도록, 프로바이더들의 OAuth를 사용하는 것이다.
중복 가입을 고려하지 않는다면, 구글/카카오/네이버/애플에서 제공하는 개인 식별값만 저장해놓으면 되기 때문이다.
카카오 디벨로퍼에서 카카오측의 답변인데
보통 이러한 식별값은 프로바이더측의 서비스에서만 종속되는 식별자다.
의미 없는 일련번호로 만들어진다.
지금은 우선 중복 가입을 허용하는 형태로 만들고
나중에 기획측에서 이를 제한할지 말지 정하고, 어떤 값을 DB에 저장할지(암호화를 한 상태로) 결정해야 한다.