fhrek
1월 4, 2024, 2:09오전
1
안녕하세요, 카카오 로그인을 활용한 소셜로그인을 개발중입니다.
현재 기획된 로그인 프로세스는 다음과 같습니다.
next.js의 nextauth를 통해서 프론트 측에서 카카오 로그인 후, 토큰 발급까지 완료.
카카오 로그인 토큰과 이메일을 백으로 넘겨주고, 서비스 자체 로그인 수행
백의 로그인 api에서 카카오 토큰이 유효한지 검증, 이메일을 기반으로 DB에 존재하는 유저라고 판별되면 로그인 성공 및 액세스 토큰 발급
이런 식으로 시나리오가 짜여있습니다.
프론트가 카카오 토큰까지 담당하는 이유는 프론트측에서 개발이 이미 그렇게 되었기 때문입니다.
여기서 궁금한점이, 카카오 토큰과 카카오 계정의 이메일정보가 프론트->백으로 넘어오면서 노출되게 되는데, 카카오 토큰이 탈취되더라도 위험성은 없는걸까요?
만약 치명적인 이슈가 있다면 백에서 로그인 과정을 일임하는 것으로 변경하려고 합니다.
tim.l
1월 4, 2024, 2:29오전
2
안녕하세요.
액세스 토큰은 프론트에서 사용할 수도 있지만, 백엔드에서 사용하는 것을 권장합니다.
Kakao Developers
카카오 API 호출은 디벨로퍼스 설정에서 특정 IP 만 호출 가능하도록 제어 가능하고 이는 정보 탈취의 큰 장벽이 됩니다.
하지만, Client에서 API 호출하면 사용자별로 IP가 다르므로 IP 호출제어가 불가능합니다.
또한 액세스 토큰을 재발급 받을 수 있는 리프래시 토큰은 반드시 백엔드에서 관리 되야 하고
학습용이나 단순 시연용이 아닌 서비스 운영용이라면,
백엔드에서 관리 하시는 것을 추천드립니다.
fhrek
1월 4, 2024, 3:45오전
3
그렇다면 클라이언트에서 사용자가 카카오 계정 정보를 입력하고, 동의 화면에서 “동의하고 계속하기” 버튼을 누르면 클라이언트에게 카카오 API 토큰이 전달될텐데… 이 과정에서 프론트에 노출되는 것은 불가피하지 않나요?
승인된 카카오 API 토큰이 백엔드쪽으로 인터셉트하는게 가능한지가 궁금합니다.
tim.l
1월 4, 2024, 4:44오전
4
동의화면 이후 리다이렉트하며 전달하는 것은 토큰이 아니라 인가코드입니다.