안드로이드에서 sdk를 활용해서 유저의 정보를 불러오게 되면, 스프링 서버에 넘기게 될때 그 유저의 넘겨받게 되는데 그러면 이때 socialId 그러니까, providerId를 통해서 유저의 정보를 구분 하면 되는걸까요?? 카카오톡에서 제공하는 accessToken을 서버로 넘기는건 지양한다고 알고있어서 어떤 정보를 서비스 서버에 넘겨야하는지 모르겠습니다!
그리고 providerId를 서비스 서버에 넘기게 된다면, 스프링에서는 password를 임의로 생성해야하는 걸까요??
안드로이드 sdk가 맞습니다!! 그래서 로그인과 회원가입이 서비스 서버측에 넘길때 같은 api로 요청하게 되는데 필요한 정보가 유저의 닉네임과 이메일일때 이 값을 데이터 베이스에 저장한다고 하면 결국 넘겨야 하는 데이터는 이메일과 닉네임 프로바이더id인데 서버측에서는 프로바이더 id를 기준으로 판단하면 되기때문에 굳이 스프링 시큐리티를 적용해야하는가 해서요!
컨트롤러 단에서 처리를 해야하는거 같은데 그러면 인증, 인가를 컨트롤러 단에서 처리를 해야해서 문제가 되지 않나요???
정확히는 액세스 토큰 전달 API호출로 컨트롤러 호출해서 스프링 시큐리티에 요청하는 것이죠. 이방법이 특별이 문제있다고 생각되지는 않지만,
위에서 설명드린 3가지 방법중 액세스토큰을 클라이언트에서 전달하는 방식을 선택 하셨다면,
“컨트롤러를 통해” 인증, 인가를 처리할 수 밖에 없고
운영하시는 상황에 맞는 추가 보안 처리를 하시면 문제 없을 것같습니다.
→ 카카오 로그인이 없다고 생각하시면, 일반회원가입을 통해 이용자에게 입력받은 값을 서버에 전달하는 것과 다를바 없습니다. (백엔드에서 카카오 액세스 토큰을 활용해야하는게 아니라면 저는 이 방식을 추천합니다.)
(2) 카카오 Android SDK이용하여 카카오 로그인 후, 액세스 토큰을 백엔드에 전달하여 실제 데이터 교신은 백엔드에서 처리 하는 방식
→ Android SDK이용하면, 인가코드 요청 부터 액세스 토큰발급까지 한번에 처리됩니다.
액세스 토큰 발급을 Android단에서 하는 것이 부담스럽다면(?), 인앱브라우저 띄우셔서 백엔드에 인가코드요청 부터 액세스 토큰 발급까지 일임해도 무방합니다. 이방법이 아래 (3)번입니다.
(3) REST-API 방식을 사용하여 인앱브라우저로 인가코드 요청 부터 모두 백엔드에 일임하거나, 인가코드 요청까지만 앱내 인앱브라우저에서 하고 리다이렉트URI를 백엔드로 설정하여 이후 백엔드에 일임하는 방식
클라이언트 단에서 백엔드로 데이터를 전송할때 기본적으로 https보안 프로토콜을 사용했다면 데이터를 중간에 탈취 당할일이 거의 없겠지만, 민감정보의 경우 요청의 정합성을 검증하는 형태로 전달합니다. 아래 내용도 참고 해보시면 좋을 것 같습니다.