Oauth2 Code Grant 방식의 동작 순서
- 로그인 페이지
- 성공 후 코드 발급 (redirect_url)
- 코드를 통해 Access 토큰 요청
- Access 토큰 발급 완료
- Access 토큰을 통해 유저 정보 요청
- 유저 정보 획득 완료
세션 방식에서 OAuth2 클라이언트 동작 원리
로그인창 요청 -> 인증서버로 리다이렉트 -> 로그인창 띄워짐 -> 로그인 성공시 우리 서버로 리다이렉트되어 코드 전송 -> 해당 코드로 인증 서버에 방문하여 액세스 토큰 생성 요청 -> 토큰으로 리소스 서버에서 유저 정보 획득 -> 유저 정보로 OAuth2서비스에서 OAuth2User에 담아서 로그인 진행 -> 로그인 성공시 로그인 핸들러가 동작하여 JWT 발급
이후 클라이언트는 API 서버에 접근할 때 JWT를 보냄 -> JWT필터가 검증하여 내부에 임시적인 세션을 만들고, 이후 세션을 참고하며 리소스 반환각 필터가 동작되는 주소
JWTFilter
직접 커스텀하여 등록
모든 주소에서 동작
OAuth2AuthorizationRequestRedirectFilter
자동으로 생성됨
/oauth2/authorization/서비스명 에서 동작
OAuth2LoginAuthenticationFilter : 외부 인증 서버에 설정할 redirect_uri
/login/oauth2/code/서비스명 에서 동작OAuth2 클라이언트에서 직접 구현해야 할 부분
- OAuth2UserDetailsService
- OAuth2UserDetails
- LoginSuccessHandler
JWT에서 직접 구현해야 할 부분
- JWTFilter
- JWTUtil : JWT를 발급 및 검증하는 클래스
JWT방식에서 OAuth2 클리이언트 구성시 백엔드와 프론트엔드의 책임 분배
개발자 유미 블로그 참고
Reference