728x90
반응형
@Configuration
@EnableWebSecurity
public class SecurityConfig {
private final JwtRequestFilter jwtRequestFilter;
public SecurityConfig(JwtRequestFilter jwtRequestFilter) {
this.jwtRequestFilter = jwtRequestFilter;
}
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http
.httpBasic().disable()
.csrf().disable()
.authorizeHttpRequests()
// 인증 없이 허용할 API
.antMatchers("/api/public/**", "/v3/api-docs/**", "/swagger-ui/**").permitAll()
// 나머지 요청은 인증 필요
.anyRequest().authenticated()
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class)
.build();
}
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring()
// 완전히 인증 제외할 경로
.antMatchers("/api/health", "/api/status");
}
}
각 방법의 차이점
설정 방법동작 방식사용 시기
HttpSecurity | 특정 경로를 인증 없이 허용 (permitAll()) | 인증은 우회하되 다른 보안 필터는 적용할 때 |
WebSecurityCustomizer | 특정 경로를 Spring Security 필터 체인에서 완전히 제외 (web.ignoring()) | 보안 필터 체인 자체를 완전히 비활성화할 때 |
결론
- 인증만 우회하려면 HttpSecurity의 permitAll()을 사용하세요.
- 특정 경로에서 Spring Security 설정 자체를 무시하려면 WebSecurityCustomizer를 사용하세요.
필요한 API의 목적과 보안 요구 사항에 따라 적절한 방법을 선택하면 됩니다.
728x90
반응형
'JAVA' 카테고리의 다른 글
[DB][Oracle] 다중 Insert INSERT ALL구문 사용 (0) | 2024.11.30 |
---|---|
[JAVA] BigDecimal 나누기 (0) | 2024.11.25 |
[JAVA] JWT인증 토큰을 거치지 않는 예외 API 설정하기 방법2 (0) | 2024.11.23 |
[JAVA] JWT인증 토큰을 거치지 않는 예외 API 설정하기 방법1 (0) | 2024.11.22 |
[JAVA] 금액(BigDecimal)을 한글로 변환하기 (1) | 2024.11.20 |