Flutter에서 서버로 넘겨주는 user의 정보가 유효한지 알려주는 값이 있을까요?

문의 시 사용하시는 SDK 버전 정보와 플랫폼(Android / iOS) 및 디벨로퍼스 앱ID를 알려주세요.


  • Flutter (Channel stable, 3.19.2, on Microsoft Windows [Version 10.0.22631.3593], locale ko-KR)
  • SDK버전: 1.9.1+2

현재 kakao_sdk를 이용해 로그인을 구현중에 있습니다.
로그인에 성공했을 때 넘어오는 값을 서버에 넘겨주려고 하는데, 이 값이 카카오 로그인을 통해 받은 값인지 확인하는 로직을 서버에 구현하려고 합니다.
이때 혹시 토큰과 같이 서버측에서 확인할 수 있는 값이 있을까요?

안녕하세요.

어떠한 값을 서버에 넘기고 어떠한 사유로 검증하고자 하시는건가요?

  • (로그인/회원가입을 위해) 카카오 로그인 성공 후 개인정보(닉네임, 이메일(카카오) 등)을 서버에 넘깁니다.
  • 이때 이런 값들이 유효한 흐름(정상적인 방식)으로 유입되었는지 확인하기 위해 서버측에서 토큰과 같은 데이터로 검증하려 합니다.

안녕하세요.

Flutter SDK 이용하며, 앱에 카카오와 교신을 일임하고 백엔드로 사용자 정보 전달하여 처리 하시려는 것으로 이해 했습니다.
이러한 상황은 카카오와 무관하게 회원정보를 입력해서 가입하는 일반적인 회원가입 시에도 동일하게 출처 검증이 필요할텐데요.


PKCE(Proof Key for Code Exchange)는 OAuth2 Flow에서 인가(Authorization) 과정에 인증코드 가로채기 공격(authorization code interception attack)을 방어하기 위한 방법입니다.

일반적으로 민감정보 변경 시, 데이터 검증 방법으로도 많이 활용됩니다.

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

Proof Key for Code Exchange by OAuth Public Clients

1개의 좋아요

PKCE 방법 알려주셔서 감사합니다. 친절하게 링크까지 안내해주셔서 감사합니다.

혹시 어플에서 https://kapi.kakao.com/v1/user/access_token_info에 보내는 authorization header의 값을 가져오는 방법은 없을까요?

다음과 같은 방법을 생각하고 있었습니다.

  1. 어플에서 정해진 api로 카카오 로그인을 통해 받은 정보와 'https://kapi.kakao.com/v1/user/access_token_info’에 사용되는 accessToken을 보낸다.
  2. 서버에서 'https://kapi.kakao.com/v1/user/access_token_info’로 accessToken을 보내 유효한지 확인.
  3. 2.가 유효한 경우 서버에서 'https://kapi.kakao.com/v2/user/me’로 카카오 로그인을 통해 받은 정보와 일치하는지 확인.
  4. 일치하면 ok, 아니면 drop.

액세스 토큰이 해당 유저의 것인지 확인하고 싶은 것이군요.

v1/user/access_token_info 호출 역시, 헤더에 설정하는 Authorization은 액세스 토큰이라.
서버측에서 조회하려면 액세스 토큰도 서버로 함께 전달하셔서 비교하시면 됩니다.

다만, 침해 사고가 발생하지 않도록 https 프로토콜로 전송하시고 암호화도 하셔서 전달하시면 좋을 것 같습니다.


OIDC 설정을 활성화 하고 카카오로그인 시, ID 토큰을 함께 받아 서버에 전달하고 ID 토큰 유효성 검증ID 토큰내 회원번호와 사용자 정보의 회원정보를 비교하는 방법을 사용하셔도 좋을 것 같습니다.

1개의 좋아요

항상 친절하게 답변해주셔서 감사합니다.
API를 통한 개발에 많은 도움 받고 있습니다.

https는 적용 완료하였고, 제안해주신 방법 적극적으로 검토하겠습니다.

감사합니다.

1개의 좋아요