모바일 SDK과 서버 연동 관련하여 질문드립니다

문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요.


안녕하세요. 프로젝트에 카카오 로그인을 구현하는 중입니다. 프로젝트는 Android와 iOS 서비스를 제공합니다.
저희가 소셜 로그인을 구현한 경험이 없어, 질문이 매우 초보적이더라도 양해 부탁드립니다. ㅠㅠ

먼저, 모바일에서의 카카오 로그인 구현은 SDK(최신 버전)를 사용할 예정입니다.

SDK를 보면, 클라이언트에서 카카오 서버로 요청하여 유저의 id와 정보를 받아올 수 있는 것으로 확인됩니다. 따라서 정보를 얻기 위해 서버에서 카카오 서버로의 통신이 필요하지 않을 것 같습니다. (맞을까요…?)

최초 로그인 시, 클라이언트에서 유저 정보를 받아, (암호화된)유저의 정보와 액세스 토큰을 저희 서버로 보내주려고 합니다. 그리고 요청을 검증하기 위해, 서버에서는 액세스 토큰을 통해 카카오 서버에 유저 정보를 요청하여, 유저의 정보가 일치하는 지 확인합니다. 여기서 몇가지 의문이 생겨 질문드립니다.

  1. 첫번째 질문은, 이러한 방식이 가능한지 여부입니다. iOS나 Android에서 받은 토큰을 REST API를 통해 카카오 서버에 요청해도, 동일한 유저 정보를 받을 수 있나요?

  2. 두번째로, 이러한 방식이 보안 상 안전한 일반적인 방식인지 여부입니다.
    https://devtalk.kakao.com/t/ios/130676/5
    위의 링크에서는, 최대한 카카오의 액세스 토큰을 저희 서버에 보내는 것을 지양하라고 합니다. (가로채기나 토큰탈취)
    그런데 만약 카카오의 액세스 토큰을 보내지 않고 유저의 정보만 저희 서버에 보내고, 서버가 이를 신뢰한다면,
    이것이 카카오 로그인을 통해 클라이언트에서 보내온 요청인지, 아니면 외부에서 악의적으로 보낸 요청인지를 구분하기 어려울 것 같습니다.

  3. 마지막으로 iOS에서 카카오 로그인을 통해 가입한 유저가 있다면, 안드로이드에서 동일한 카카오 아이디로 로그인 했을 때, 동일한 id 값을 넘겨주나요? 이를 통해 저희 서버에서 (iOS와 Android가)동일한 사용자임을 인지하고, 저장된 유저의 정보를 제공할 수 있나요?

질문 읽어주셔서 감사합니다. 항상 많은 도움을 받고 있습니다.

안녕하세요.

1. 클라이언트에서 발급받은 접근토큰을 백앤드에서 사용 가능하며 사용 시, 동일한 정보를 전달 받습니다.

2. 클라이언트에서 발급받은 접근토큰을 서비스측으로 전달 필요 여부는 서비스측 구현에 따라 달라지게 됩니다. 보통 백앤드에서 접근/리프래시토큰을 사용하여 배치 성격의 서비스가 있을 때 전송하며, 일반적으로 클라이언트에서 발급받은 접근토큰은 서버로 전송이 필요하지 않습니다.

유저정보는 사용자 접근토큰 외에도 백앤드에서 어드민 키를 사용하여 사용자의 회원번호 만으로 조회 할 수 있습니다.

때문에, 카카오 로그인 이후 서비스측 회원가입 시, 클라이언트에서 조회된 사용자 정보를 서비스측 백앤드로 전달하기도 하지만, 회원번호만을 전달하여 조회하여 사용하기도 합니다.

회원번호(id)는 사용자가 어떠한 플랫폼을 사용하더라도 동일 계정으로 동일 서비스에 카카오 로그인하게 되면, 동일한 id값이 제공합니다.

서비스의 클라이언트와 백앤드간 요청 신뢰 여부는 서비스측에서 해결하셔야 하는데요, 보통 별도 세션처리를 하거나 키 해시 같은 값을 전달하여 클라이언트를 구분합니다.

1개의 좋아요

답변 감사드립니다! 도움이 많이 되었습니다.