소셜로그인 아키텍처

UX적인 측면을 고려하여 소셜로그인을 프론트에서 처리하고 백엔드에 정보를 넘겨줍니다.

이떄, 회원가입시 저희 앱을 통해 소셜로그인을 완료하여 인증된 사용자인지 확인하는 로직을 위해 프론트엔드에서 공유키로 암호화하여 헤더에 담아 백엔드로 보내면 백엔드에서 복호화하여 서명을 인증하고 임시토큰(저희 앱에서 발급)을 발급하여 회원가입에 필요한 추가정보를 입력합니다.

하지만, 공유키가 탈취되면 인증로직이 무용해지기 때문에 보안성 이슈가 발생한다고 생각합니다.

그래서 회원가입시에 프론트엔드에서 카카오 소셜로그인서버에서 발급한 access token을 헤더에 담아 서버로 보내주면 서버에서 카카오소셜로그인 서버에 사용자 정보를 확인하고 임시토큰을 발급하는 형식을 고려중에 있습니다. 다만, 이런식의 아키텍처는 카카오 액세스 토큰 탈취에 대한 우려 등이 있어 이를 통해 공격자가 다른 권한 있는 작업을 수행할수도 있겠다는 생각이 듭니다.

소셜로그인 로직을 프론트에서 처리하고 백엔드에 필요 정보를 넘겨주는 아키텍처에서는 어떻게 구현해야하나 문의 드립니다.

안녕하세요.

확인을 위해 앱 ID 부탁드립니다.


앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다
ex) 123456

백엔드로 중요 정보를 전달하거나 중요 처리를 요청하는 경우는 일반적인 상황입니다.
운영하시는 서비스 상황에 맞게 요청자 및 요청 데이터 검증하여 보안을 강화 하실 수 있으니 정답이 정해져있지는 않습니다.

아래 내용 참고해보시면 좋을 것 같습니다.

Proof Key for Code Exchange by OAuth Public Clients