문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요.
안녕하세요. 프로젝트에 카카오 로그인을 구현하는 중입니다. 프로젝트는 Android와 iOS 서비스를 제공합니다.
저희가 소셜 로그인을 구현한 경험이 없어, 질문이 매우 초보적이더라도 양해 부탁드립니다. ㅠㅠ
먼저, 모바일에서의 카카오 로그인 구현은 SDK(최신 버전)를 사용할 예정입니다.
SDK를 보면, 클라이언트에서 카카오 서버로 요청하여 유저의 id와 정보를 받아올 수 있는 것으로 확인됩니다. 따라서 정보를 얻기 위해 서버에서 카카오 서버로의 통신이 필요하지 않을 것 같습니다. (맞을까요…?)
최초 로그인 시, 클라이언트에서 유저 정보를 받아, (암호화된)유저의 정보와 액세스 토큰을 저희 서버로 보내주려고 합니다. 그리고 요청을 검증하기 위해, 서버에서는 액세스 토큰을 통해 카카오 서버에 유저 정보를 요청하여, 유저의 정보가 일치하는 지 확인합니다. 여기서 몇가지 의문이 생겨 질문드립니다.
-
첫번째 질문은, 이러한 방식이 가능한지 여부입니다. iOS나 Android에서 받은 토큰을 REST API를 통해 카카오 서버에 요청해도, 동일한 유저 정보를 받을 수 있나요?
-
두번째로, 이러한 방식이 보안 상 안전한 일반적인 방식인지 여부입니다.
https://devtalk.kakao.com/t/ios/130676/5
위의 링크에서는, 최대한 카카오의 액세스 토큰을 저희 서버에 보내는 것을 지양하라고 합니다. (가로채기나 토큰탈취)
그런데 만약 카카오의 액세스 토큰을 보내지 않고 유저의 정보만 저희 서버에 보내고, 서버가 이를 신뢰한다면,
이것이 카카오 로그인을 통해 클라이언트에서 보내온 요청인지, 아니면 외부에서 악의적으로 보낸 요청인지를 구분하기 어려울 것 같습니다. -
마지막으로 iOS에서 카카오 로그인을 통해 가입한 유저가 있다면, 안드로이드에서 동일한 카카오 아이디로 로그인 했을 때, 동일한 id 값을 넘겨주나요? 이를 통해 저희 서버에서 (iOS와 Android가)동일한 사용자임을 인지하고, 저장된 유저의 정보를 제공할 수 있나요?
질문 읽어주셔서 감사합니다. 항상 많은 도움을 받고 있습니다.