소셜로그인 인증 문제 - nhnacademy-be10-WannaB/wannab-wiki GitHub Wiki

Oauth2 흐름

spring security를 사용시 생기는 문제

스프링 시큐리티를 사용시 진입점부터 요청자 정보 조회를 통한 회원가입 절차까지 한 번에 처리하게 되는데

  • 위 이미지의 1 ~ 12까지를 시큐리티에서 일괄 처리함

이 과정에는 사용자의 브라우저와 통신하는 과정이 포함됨

그런데 프로젝트의 데이터 흐름은 <사용자 - 프론트 - 게이트웨이 - 유저서비스> 이므로 리다이렉트를 사용한 통신 흐름이 이어지지 않음

해결법

  1. 프론트가 받은 리다이렉트 요청을 프론트로 보냄
    • 스프링 시큐리티를 사용한 개발자의 실수 요소 제거에 적합하지 않다고 생각이 듬
  2. 프론트에 스프링 시큐리티를 사용해 직접 브라우저에 리다이렉트 함
    • 프론트에 스프링 시큐리티를 포함해야 하는 문제 있음
    • 잘 동작할 지 모르겠음
    • 프론트에 디비 연결필요함(회원가입)
  3. 프론트에서 유저서비스의 특정 경로로 직접 리다이렉트 함
    • 사용자에서 서비스로 직접 통신한다는 문제 있음
    • 사용자와 인증서버가 직접 통신하므로 구조상 올바름
    • 유저서비는 단순 인증서버가 아니라는 문제가 있음
  4. 스프링 시큐리티를 사용하지 않고 브라우저는 인가코드를 발급받는 부분까지, 유저서비는 그 이후를 구현
    • 스프링 시큐리티를 사용하지 않는 단점
    • 프론트와 인증 서버를 분리한 경우에서 구현가능한 해결방법
  5. 브라우저 - 프론트 사이에 인증 게이트웨이 포함
    • 방법 중 하나

3번이 올바른 방법인 것 같고 아니면 4번