프로젝트에 소셜 로그인 기능을 추가하고자 하였다. Spring Security를 활용하여 Form Login으로 구현하였는데, 소셜 로그인을 위한 Oauth2 방식을 적용할 때 고려해야 할 부분이 많았다.
https://github.com/hanbonghun/spring-QA-board/commit/a1ddb8f31c82959d67fba7f3024ec0d210364b71
http 요청이 들어온다
http.authorizeHttpRequests()를 통해 설정된 체인을 거친다
AuthenticationManager가 인증 요청을 처리할 수 있는 provider를 찾는다
해당 provider는 인증 방식에 맞는Service를 수행하여 인증에 성공한 User를 반환한다
DefaultOAuth2UserService나 UserDetailsService를 구현하고 해당 인터페이스의 메서드를 구현하여 사용하는 것은, Authentication Provider가 인증을 어떻게 처리할지에 대한 명세
AuthenticationManager은 이러한 인증 Provider 중 적절한 Provider를 선택하여 인증을 수행
@Bean
AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
return authenticationConfiguration.getAuthenticationManager();
}
Oauth2 동작 과정 : https://lotuus.tistory.com/83
구글 로그인 : https://lotuus.tistory.com/79
Form, Oauth2 로그인 구현 : https://lotuus.tistory.com/78
WEB2 - Oauth2 : https://www.youtube.com/watch?v=hm2r6LtUbk8&t=3s