[java] 스프링 시큐리티에서의 소셜 로그인 인증

스프링 시큐리티는 웹 애플리케이션의 보안을 관리하는 프레임워크입니다. 소셜 로그인은 사용자가 다른 웹 애플리케이션의 자격증명을 사용하여 로그인하는 방식을 말합니다. 스프링 시큐리티에서는 소셜 로그인을 구현하기 위해 다양한 인증 방식을 제공합니다.

구글 로그인 인증

구글은 많은 사람들이 사용하는 소셜 로그인 제공자 중 하나입니다. 스프링 시큐리티에서는 구글 로그인 인증을 위한 GoogleOAuth2AuthenticationFilter를 제공합니다.

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/login/**").permitAll()
                .anyRequest().authenticated()
                .and()
            .oauth2Login()
                .loginPage("/login")
                .defaultSuccessUrl("/home")
                .failureUrl("/login?error=true")
                .and()
            .oauth2Login()
                .userInfoEndpoint()
                    .userService(customOAuth2UserService)
                    .and()
                .and()
            .oauth2Client();
    }
    
}

위의 코드에서 configure 메서드 내에서 http 객체를 통해 인증 및 권한 설정을 수행합니다. oauth2Login 메서드는 구글 로그인을 활성화하고, loginPage 메서드를 통해 사용자 정의 로그인 페이지를 설정합니다. defaultSuccessUrlfailureUrl은 로그인 성공 및 실패 시 이동할 페이지를 설정하는 것입니다.

구글 로그인을 처리하기 위해서는 GoogleOAuth2UserService를 구현해야 합니다. 이를 통해 사용자의 정보를 가져와서 처리할 수 있습니다.

@Service
public class CustomOAuth2UserService extends DefaultOAuth2UserService {
    
    @Override
    public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
        OAuth2User oauth2User = super.loadUser(userRequest);

        // 사용자 정보 가져오기 및 처리

        return oauth2User;
    }
    
}

위의 코드는 CustomOAuth2UserService 클래스를 정의한 것입니다. loadUser 메서드를 오버라이딩하여 사용자 정보를 가져오고 처리할 수 있습니다.

참고 자료