서비스 로그인 방식 구현에 대한 고민

안녕하세요, 백엔드 개발자로 재직 중입니다.

현재 서비스가 안드로이드앱에서만 카카오 로그인 기능을 제공하고 있습니다.
안드로이드에 카카오 로그인은 네이티브앱 개발로 이뤄져있습니다.

근데 네이티브앱 로그인에서 인증 오류 등이 발생하고 있어서 수정이 꼭 필요한 상황인데
고민입니다. 어떤 쪽이 좋을지 몰라 의견을 구하고자 글 남깁니다.

  1. REST API 로그인을 구현하고 네이티브 앱 카카오 로그인 제거, 아이폰앱에도 카카오 로그인 적용
  2. 안드로이드 네이티브 앱 카카오 로그인의 기능을 수정하고, 아이폰에 카카오 로그인은 따로 개발함.

선택에 대한 의견을 간단하게라도 남겨주시면 감사히 참고하고 싶습니다.

안녕하세요.

서비스 측의 인가(세션, 로그인유지) 처리가 어떻게 이루어졌는지에 따라 방법을 고민해보셔야 할것 같습니다.

  1. 앱은 어떤 유형(완전한 네이티브 or 하이브리드)으로 되어 있으실까요?
  2. 그리고 로그인 유지는어떻게 하고 계실까요?
  3. 기존 로그인 방식은 어떻게 구현되어 있을까요?(JS SDK or Native SDK 등…)
1개의 좋아요
  1. 완전한 네이티브 입니다.
  2. 네이티브에서 토큰을 받아서 서버로 ajax를 통해 전달하는 것으로 보입니다.
  3. 기존 로그인 방식은 안드로이드 native SDK입니다.

안녕하세요.

네이티브앱을 운영하시고 네이티브SDK를 사용하신다면, 기존 방식과 동일하게 native SDK사용하는 것을 권장드립니다.
(액세스 토큰을 서버로 전달하는 것은 권장하지 않습니다. native SDK를 사용하신다면 카카카오와 교신은 native SDK로만 처리)

백엔드에서 액세스 토큰을 이용한 카카오와 교신이 필요하다면 인가요청 부터 액세스 토큰 발급, 카카오와 교신 모두 백엔드에서 하는 것을 추천드립니다.

백엔드에서 카카오와 교신을 일임하여 액세스토큰이 노출 되지 않도록 하는 것은 아래 node.js예제를 참고해보시면 좋을 것 같습니다. (앱에서 백엔드로 API요청하고 백엔드에서는 결과만 전달)

[rest api 예제] node.js- 카카오 로그인, 카카오 친구목록 조회, 나에게 메시지 발송

근데 네이티브앱 로그인에서 인증 오류 등이 발생하고 있어서 수정이 꼭 필요한 상황인데

인증 오류라 하심은 어떤것인가요?

1개의 좋아요

토큰이 만료되었다고 나오는데, 앱에서 발생하는 문제로 보입니다. 아마 토큰 갱신을 못하는 경우가 있는 것 같습니다.
ios도 kakao native sdk로 개발해야겠군요. 감사합니다.

두 네이티브 앱 모두 rest api로 변경하고 싶으면 AOS에 기존 카카오 로그인을 제거하고 새로 개발해야하는 상황이 되겠군요.
감사합니다.

토큰은 발급받은 앱키 유형별로 만료시간이 있습니다.

알고 계신것처럼 리프래시 토큰으로 토큰 갱신을 해야하는데요.

아래 내용 참고하시면 좋을 것 같아요.

카카오 로그인 액세스 토큰과 리프레시 토큰

보통 Refresh Token을 Refresh Token 만료 1개월 전 시점 재발급 받았는데 기존 Refresh Token을 사용해서 에러발생하거나
사용자가 연결끊기 한경우 로그인 시도를 다시해야하는 부분들을 확인해보시면 좋을 것 같습니다.
(토큰 갱신 실패 시, 카카오로부터 전달받는 응답값 로깅 해보시면 좋을 것 같아요.)

현재 서비스에 이메일 로그인이 구현되어 있는데, 안드로이드 카카오 로그인이 백엔드 서버로 토큰을 보내주고 있습니다. 이런 상황이라면, 안드로이드 네이티브 로그인을 제거하고, rest api로 카카오 로그인을 다시 구현하는게 맞지 않을까요?

"현재 서비스에 이메일 로그인"이라 하심은 어떤것인가요? 카카오와 무관한 일반적인 로그인을 말씀하시는걸까요?

네 그렇습니다.

자체 구현하신 로그인 시, 서버에서 발급받은 JWT토큰을 이용하여 백엔드 호출하는 것으로 이해했습니다.
이렇게 사용하는 것은 일반적인 상황으로 보이네요. Client가 Server에 접근 토큰으로 요청하는 것. 그냥 사용하셔도 무방할 것 같습니다.

카카오 액세스 토큰을 Client에서 Server로 넘기지 말라고 권장 드린 것은 전달하는 과정에 탈취될 가능성이 있기 때문이고
백엔드에서만 카카오 액세스 토큰을 핸들링 하시게되면 탈취 리스크가 근본적으로 없어지기 때문에 그렇게 안내드리고 있습니다.