반응형
Spring boot v3.2.3 & Spring Security 6.2.2 에서 클라이언트의 URL 요청 허용을 정규 표현식으로 허용하는 방법이다.
아래는 정규 표현식을 이용하여 requestMatchers 사용한 예시이다.
http
.authorizeHttpRequests((authorize) -> authorize
.requestMatchers(RegexRequestMatcher.regexMatcher("/resource/[A-Za-z0-9]+")).hasAuthority("USER")
.anyRequest().denyAll()
)
✔️ 적용한 전체 코드 예시
[ WebSecurityConfig.java ]
@Configuration
@EnableWebSecurity
public class WebSecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
// CSRF 설정
http.csrf(AbstractHttpConfigurer::disable);
// form login 미사용
http.formLogin(AbstractHttpConfigurer::disable);
// 기본 설정인 Session 방식은 사용하지 않고 JWT 방식을 사용하기 위한 설정
http.sessionManagement((sessionManagement) ->
sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
);
http.authorizeHttpRequests((authorizeHttpRequests) ->
authorizeHttpRequests
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() // resources 접근 허용 설정
.requestMatchers("/users/signup", "/users/login").permitAll() // 로그인 / 회원 가입 접근 허가
.requestMatchers(RegexRequestMatcher.regexMatcher("/products/\\d+")).permitAll() // 상품 조회 접근 허가
.anyRequest().authenticated() // 그 외 모든 요청 인증처리
);
return http.build();
}
해당 내용은 아래 Spring Security 공식 문서에서 찾을 수 있었다.
비교적 최신 버전인 정보를 찾을 때 에는 공식 문서를 잘 참고하자!
반응형