안녕하세요 소셜 로그인에 관련해서 공부를 하고 있는 대학생입니다.
다름이 아니라 제가 이때까지 개발을 쭉 해오면서 Redirect_URL을 프론트엔드에서 뒀을때의 환경에서도 개발을 해왔었고 백엔드에서도 뒀을때의 환경에서도 개발을 해왔었는데요.
이번에도 소셜 로그인을 구현을 하게 되어 깊은 고민을 따로 해보는 시간을 갖게 되었습니다.
결론부터 말씀을 드리자면 Redirect_URL 자체는 프론트엔드에서 두기로 하였습니다.
환경은 React + Spring Boot에서 개발을 진행하게 되었고 좀 여러 의문점과 고민이 생겨 문의를 올립니다.
-
첫번째 질문은 백엔드에서 Redirect_URL을 뒀을때 프론트엔드에서 두는 것보다 인가 코드를 탈취 당할 가능성도 적고 백엔드 서버 자체내에서 인가 코드를 받아 액세스 토큰을 생성하여 프론트엔드 쪽으로 넘겨주기 때문에 보안상으로도 위험 부담이 적은데
여러 블로그를 찾아본 결과 서비스를 실제로 상용할때는 보통 프론트엔드 에서 Redirect_URL을 두는게 일반적이라고 합니다.
진실인가요? 현업에서도 소셜 로그인을 구현할 때 프론트엔드에서 Redirect_URL을 두는게 일반적인건가요?
만약 그렇다면 왜 그렇죠? -
두 번째 질문은 프론트엔드에서 Redirect_URL을 두게 될 경우 인가코드를 백엔드에게 넘겨줘야되는 상황에서 탈취를 당하는 보안상의 위협을 겪게 되는데도 프론트엔드에서 둬야되나요?
-
세 번째 질문은 위의 문제점인 인가코드를 탈취위험성을 방지하기 위해 PKCE를 적용한다고 합니다. 이걸 찾아보니 OAuth2.1이라고 하던데 그러면 만약 프론트엔드 Redirect_URL을 사용하게 된다면 인가 코드를 PKCE 처리를 해주는게 맞을까요? 아니면 카카오 소셜 로그인 API자체 내에서는 이미 처리가 되어있는 인가코드 일까요?