카카오 로그인 문의


현재 서비스 구축을 진행하고 있습니다.
우선 자사 홈페이지에 회원가입이 가능하며, 아이디/비밀번호 또는 카카오/네이버 소셜로그인 2가지로 로그인방법을 제공하려고합니다.
여기서 4가지 경우가 발생하는데요.
각각 상황별로 어떤 고유정보값을 사용하여 사용자를 구분할 수 있는지 문의드리고 싶습니다.

  1. 홈페이지 미회원인 경우
  2. 홈페이지 회원이지만 계정 연동을 안한 경우
  3. 홈페이지 회원이고 계정 연동을 한 경우
  4. 홈페이지 회원이지만 만14세 미만인 경우 (본인인증 x)

저희 자체 홈페이지내에서 제공받는 정보와 카카오 소셜로그인측에서 제공해주는 데이터를 비교해서 회원/비회원 구분을 진행해야하는데요.
여기서 회원을 구분할 수 있는 고유값으로 휴대폰번호, 이메일을 생각하였는데 휴대폰번호와 이메일값은 변동되는값이기때문에 고유값이라고 하기엔 불가능할 것 같아서요 ㅠㅠ.

[1번의 경우]

  • 홈페이지 내 회원가입시 PASS인증으로 본인인증을 진행하고 이름, 생년월일, 전화번호, 이메일 정보를 입력받고있습니다.
    → 여기서 [PASS] 본인인증 후 제공받는 CI값과 카카오 로그인에서 제공하는 CI값을 비교하여 홈페이지 회원인지 미회원인지 구분이 가능할까요?
    → 또한 CI값으로 홈페이지 회원/미회원을 구분할 수 없다고하면 회원가입의 유무는 어떻게 확인하면 좋을까요.

[2번의 경우]

  • 만약 CI값으로 홈페이지 회원/미회원을 구분할 수 있다고하면 계정 연동의 유무는 어떤 데이터로 확인할 수 있을까요?
  • 또한 CI값으로 홈페이지 회원/미회원을 구분할 수 없다고하면 계정 연동의 유무는 어떻게 확인하면 좋을까요.

[4번의 경우]

  • 홈페이지 내 '14세 미만’회원가입 시 본인인증을 따로 진행하지 않고 이름, 생년월일, 이메일 정보를 입력받고 있습니다.
  • 만약 PASS인증을 따로 진행하지 않았다면 홈페이지에서 제공받은 정보만으로는 회원/미회원과 소셜로그인 연동/미연동의 여부를 확인하기 어려울까요??

마지막으로 CI(연계정보)값은 필수적으로 제공해주는 값이 맞을까요??
카카오측에서 제공하는 ‘설정하기’ 문서에서는 CI(연계정보)의 상태가 '권한 없음’으로 나와있는상태입니다.

참고 정보

  1. CI(연계정보)는 운영하시는 서비스 회원가입에 본인 확인 기관에의한 본인 인증 기능이 확인된 경우만 설정 권한 제공되고, 중복회원 체크 등 기존회원 여부 판별 용으로 제공하며 이외의 목적으로 사용/활용해서는 안됩니다.

  2. 중복회원 체크 목적이 달성된 경우나 해당 서비스에서 탈퇴 하는등 목적을 다한 경우 파기해야합니다.

  3. 서비스내 CI 수집이 필요한 경우 본인 확인 기관에의한 본인 인증기능을 별도로 수행하셔서 수집하셔야합니다. CI 동의 항목 설정 권한이 있어 조회 가능한 경우에도 "제23조의6(연계정보의 안전조치 의무 등) "조항이 포함된 정보통신망법 개정안 [2024. 7. 24. 시행] 국가법령정보센터에 따라 클라이언트로 내려가는 SDK 응답에 CI는 제외되고 백엔드에서 서버to서버 전송구간 HTTPS 적용하여 REST API 사용자 정보조회 API로 CI를 조회 해야합니다.

안녕하세요.

여러 가지 상황에 대한 질문을 주셨는데, 각 상황별로 답변 드리겠습니다.

1. 홈페이지 미회원인 경우

  • 카카오 로그인을 통해 새로운 사용자가 로그인할 경우, 카카오에서 제공하는 app_user_id를 사용하여 사용자를 구분할 수 있습니다. 이 값은 카카오 계정과 디벨로퍼스 앱에 종속적인 고유 ID입니다.

2. 홈페이지 회원이지만 계정 연동을 안한 경우

  • 이 경우에도 카카오 로그인을 통해 로그인할 때 app_user_id를 사용하여 사용자를 구분할 수 있습니다.
  • 계정 연동 여부는 카카오 로그인으로 받은 app_user_id와 홈페이지 내의 사용자 정보를 비교하여 확인할 수 있습니다. 예를 들어, 홈페이지 내에 카카오 로그인 연동 여부를 저장하는 필드가 있다면 이를 확인하면 됩니다.

3. 홈페이지 회원이고 계정 연동을 한 경우

  • 이 경우에도 카카오 로그인을 통해 로그인할 때 app_user_id를 사용하여 사용자를 구분할 수 있습니다.
  • 계정 연동 여부는 카카오 로그인으로 받은 app_user_id와 홈페이지 내의 사용자 정보를 비교하여 확인할 수 있습니다.

4. 홈페이지 회원이지만 만14세 미만인 경우 (본인인증 x)

  • 카카오계정에 본인인증 안 했다면 만14세 미만인지 확인 불가능하므로 위 처리 방식과 동일합니다.
  • 이 경우에도 카카오 로그인을 통해 로그인할 때 app_user_id를 사용하여 사용자를 구분할 수 있습니다.

CI 값에 대한 질문

  • CI 값은 카카오 로그인에서 필수적으로 제공되는 값은 아닙니다. 카카오계정에 본인인증을 거친 사용자만 제공되며, 이를 사용하기 위해서는 카카오 싱크 설정에서 CI 값을 필수로 설정해야 합니다. - CI 참고 정보에 제약사항 기술되어 있습니다.

결론

  • 사용자를 구분하는 고유값으로는 카카오 로그인에서 제공하는 app_user_id를 사용하는 것이 가장 안전하고 확실한 방법입니다.
  • CI 값은 본인인증을 거친 사용자에게만 제공되므로, 만14세 미만 회원이나 본인인증을 거치지 않은 사용자에게는 CI 값을 사용할 수 없습니다.

추가로 궁금한 점이 있으면 언제든지 문의해 주세요.

[ @tim.l @woody.ho ]

안녕하세요 친절한 답변해주셔서 감사합니다.

홈페이지 회원+계정연동을 1회한 경우에는 카카오에서 제공한 app_user_id가 저희 서비스 자체 회원 DB에 저장되어 회원DB를 확인했을 때 일치하는 app_user_id가 있으면 연동회원/미연동 회원으로 구분할 수 있다는 것은 확인하였습니다.

근데 여기서 의문점이 홈페이지 미회원과 홈페이지 회원이지만 계정연동을 안한 경우에
app_user_id를 사용하여 사용자를 구분할 수 있다는게 잘 이해가 안가서요.

홈페이지 회원이지만 계정을 연동안한경우에는 카카오 로그인을 진행했을 때 당연히 처음 제공받는 app_user_id 정보가 들어올것이고 이를 대조할 데이터가 없는데 해당 정보로 어떻게 정보를 판별할 수 있을까요??

예를들어 제가 홍길동/010-1111-1111/1000.00.00인 사용자 정보를 입력하고 회원가입 시 저희 사이트 회원DB에 해당 사용자 정보(이름,전화번호,생년월일)밖에 없을텐데 app_user_id만 제공받는다고해서 홍길동 회원과 카카오계정회원이 동일인이라는 것이 판별이 될까요??

최종적으로 app_user_id를 통해 기존회원과 카카오 계정 로그인회원이 동일인이라는 것을 어떻게 판별할 수 있는지가 궁금합니다!!

홈페이지 회원이지만 계정을 연동안한경우에는 카카오 로그인을 진행했을 때 당연히 처음 제공받는 app_user_id 정보가 들어올것이고 이를 대조할 데이터가 없는데 해당 정보로 어떻게 정보를 판별할 수 있을까요??

카카오 로그인으로 전달받는 이용자 정보(이메일, 전화번호, CI)로 매핑 하기도 하지만 정보가 다를 수도 있고
카카오계정에 이메일, 전화번호, CI는 이용자가 변경할 수도 있는 정보로 정보 변경 시, 이용자가 불편을 겪을 수 있습니다.

[정보가 변경되는 경우]

  • 이메일 : 대표메일 변경
  • 전화번호 : 다른 전화번호 기기에서 카카오톡 연동
  • CI : 고객센터에 연락하여 본인인증 초기화 요청

3.4. 카카오 로그인으로 기존 회원 매핑 시 주의 사항

(1) 연동 안한 기가입 계정을 이미 알고 있을때

이용자가 기존 계정에 ID/PW에 로그인 후, 마이페이지에서 카카오 로그인하며 동일 정보 여부와 무관하게 app_user_id를 연동할 수 있습니다.

(2) 연동 안한 기가입 계정을 모르고 카카오 로그인 시도할때

기가입계정과 일치성을 판단할 수 있는 이메일, 전화번호, CI 일치 되는 경우
기존 계정으로 로그인하며 연동

  • 전화번호는 소유자가 변경될 수 있으므로 단순히 점유인증으로 매핑하게되면 개인정보 유출로 이어지게 되므로 반드시 기존계정 로그인으로 매핑해야합니다.
  • 이메일은 소유자가 변경되지 않으나 반드시 이메일 점유인증후 매핑 해야합니다.

즉, app_user_id는 가입후, 매칭후 로그인 시 계정 식별 수단입니다.

앱ID 알려주시면 서비스 특성에 맞는 추가 안내드리도록 하겠습니다.

현재 구축을 진행중인상태라 앱ID가 따로 없습니다! 설계중에 궁금한 점이 있어 문의드렸습니다

그러면 지금 답변주신 내용을 요약하면
app_user_id 내 이름/전화번호/CI 정보가 포함되어 있으니
카카오로 최초 로그인한 사용자를 기가입회원인지/아닌지의 판별은
이름+CI 나 이름+전화번호+CI이렇게 AND 조건으로 회원을 판별하면된다고 이해하면될까요~?

이후 카카오계정을 연동했을경우는 기존회원과 카카오 app_user_id정보가 맵핑되어 있으니 이 app_user_id를 통해 연동회원/미연동회원을 구분하란말씀이시구요!

네, 맞습니다.

추천드리는 방법을 조금더 구체화 해보면

(1) 이용자 마이페이지에서 카카오 로그인해서 매핑 및 매핑 변경 기능제공

(2) 카카오 로그인 시점에 기가입된 계정과 일부 정보 일치하는 경우

  1. CI 일치 시, 동일 계정 존재 확인 요청 (마스킹된 일부 정보 제공)
    → 기존 계정으로 로그인하며 매핑
  2. 이메일 일치 시, 동일 계정 존재 확인 요청 (마스킹된 일부 정보 제공)
    → 기존 계정으로 로그인하며 매핑 or 이메일 점유 인증하며 매핑

가급적 이용자가 기존계정과 매핑되는 부분 인지할 수 있게 동선 구성하셔야 분쟁을 방지 할 수 있습니다.
참고 부탁드려요.

네~! 감사합니다!
진짜 마지막으로

  1. 현재 마이페이지에서 카카오 소셜 로그인 연동/미연동을 설정할 수 있도록 기능을 추가할예정입니다!
  2. 일부 정보가 일치하는경우는 아래 시스템 창을 노출시켜 [확인] 클릭 시 연동이 바로 될 수 있도록 구성하고 있는데
    [확인]을 눌렀을 때 저희 사이트 로그인을 진행해야지 연동을 할 수 있도록 서비스를 구성하라는 말씀이실까요??

여기서 [확인] 버튼 눌렀을 때 연동되는 기능도 구현이 가능한지 궁금합니다.

[확인창]
연동된 회원정보가 없습니다.
회원님의 계정 [계정정보 노출]과 카카오계정을 연동하시겠습니까?
연동을 원하시면 [확인] 버튼을 클릭해주세요.

[확인]을 눌렀을 때 저희 사이트 로그인을 진행해야지 연동을 할 수 있도록 서비스를 구성하라는 말씀이실까요??

네, 맞습니다. 말씀하신 것처럼 [확인] 후 바로 매핑하는 경우도 많이 있으나

  1. 전화번호로 다이렉트 매핑은 절대 하면 안되구요.
  2. 이메일로 다이렉트 매핑을 하려면, 이용자가 개인정보를 입력해서 직접 가입할때 반드시 이메일 점유인증을 진행한 계정만을 대상으로 매핑해야합니다.
  • 일반 회원가입 시, 임의 이메일 입력(점유인증 안함) - 전혀다른 카카오계정 소유자와 이메일 일치하여 매핑 사례로 경찰 고발된 사례가 있습니다.
  1. CI로 다이렉트 매핑은 가능. + 확인창과 연동/미연동 설정 기능도 제공하시니 CI 매핑은 큰문제 없어 보입니다.

참고 부탁드려요.

친절한 답변감사합니다~!