(1) 모바일 환경에서 SDK사용할때
(2) 웹환경에서 Front, Backend 서버 분리된 경우
각각 조금 다를 것 같구요.
인가 코드를 받아 front로 보내거나 Backend로 보내거나는 상황에 맞게 구현하시면되지만
REST환경에서 액세스 토큰은 Backend에서만 관리하시는게 보안을 위해 좋습니다.
플루터 sdk를 사용하시면 REST 방식은 사용하실 필요없습니다. SDK사용시, 카카오서버와 통신은 SDK가 담당하며 모바일 앱에서는 SDK가 제공하는 기능만 사용하시면됩니다.
웹서비스에서 액세스 토큰을 Backend에서만 관리하도록 안내하는 것은 상대적으로 출력된 Front소스에 접근이 쉬운 웹환경일때 액세스토큰이 탈취되지 않도록 하기 위함입니다.
모바일에서 시스템 구축 시,
카카오와 교신은 SDK에게 일임하고
SDK로 부터 받은 사용자 정보는 REST-API를 이용하여 제공하시는 서비스 서버에 저장합니다.
가입 후,
카카오 로그인 시, 가입된 유저인지 판단은 액세스 토큰이아니라
SDK에의해 조회된 앱유저ID와 제공하시는 서비스 서버에 저장된 앱유저ID를 비교하여 판단합니다.
rest api 로 할떄는 인가토큰이랑 액세스토큰 노출 안할려고 redirect uri등록해서 그쪽으로 받다가 막상 모바일에서는 sdk사용할떄는 액세스토큰, 리프레쉬 토큰을 노출될수있는채로 그냥 사용하는것 같아서 이상하게 느껴집니다. 탈취될수 있다는걸 감안하고 그냥 쓴다고 보면 될까요?
모바일 기기는 일반적으로 특정 사용자 개인 기기 입니다. 또한 웹브라우저의 소스보기 기능과 같은 단순한 기능으로 액세스 토큰과 리프레시 토큰의 열람은 불가능합니다. 로그인된 기기를 온전히 탈취해서 조작하지 않는한 "노출될수있는채로 그냥 사용"되지는 않습니다. 서비스하는 앱 도, 디벨로퍼스에 미리 등록된 패키지 또는 번들하에서만 카카오에서 정보를 받아갈 수 있습니다.
반대로 웹환경의 REST-API사용 시, URL접근으로 어떤 기기에서든 서비스 Front에 접근 가능합니다. 디벨로퍼스에 미리 등록된 서버만 접근 가능하도록 할 수 있지만, 액세스 토큰을 웹브라우저로 내려주게되면 제3자가 접근할 가능성이 모바일 기기보다는 훨신 높습니다.
모바일 환경과 웹환경의 특성차이가 있으므로 같은 조건이 아니라 판단하는게 좋을 것 같습니다.