Spring Security / / 2024. 10. 30. 14:59

requestMatcher

requestMatcher는 Spring Security에서 특정 요청 경로에 대해 조건을 정의하는 기능입니다. 보안 필터에서 특정 URL이나 HTTP 메소드에 맞는 요청이 들어왔을 때만 필터가 작동하게 설정할 수 있습니다. requestMatcher는 주로 보안 설정을 세분화하거나 CSRF 정책 등을 특정 조건에 맞추어 설정할 때 사용됩니다.

 

사용 방법

 

일반적으로 HttpSecurity에서 requestMatchers() 메서드를 사용해 특정 URL 경로나 조건을 설정합니다. antMatchers, mvcMatchers 등의 메서드도 같은 역할을 하지만, requestMatchers는 훨씬 더 다양한 조건을 지원합니다.

http
    .authorizeRequests()
    .requestMatchers("/admin/**").hasRole("ADMIN") // /admin 하위 경로를 ADMIN 권한으로 제한
    .anyRequest().authenticated();

 

위 코드는 /admin/** 경로로 시작하는 모든 URL에 대해 ADMIN 역할이 있는 사용자만 접근할 수 있도록 설정합니다.

 

RequestMatcher 사용 예시

 

1. Custom RequestMatcher 사용하기

RequestMatcher는 단순히 경로나 메소드뿐 아니라 커스텀 조건을 통해 보안 정책을 적용할 수 있습니다. 예를 들어, 요청이 특정 파라미터를 포함하는지 확인하는 RequestMatcher를 작성할 수 있습니다.

public class CustomRequestMatcher implements RequestMatcher {
    @Override
    public boolean matches(HttpServletRequest request) {
        String authToken = request.getParameter("authToken");
        return authToken != null && authToken.equals("secureToken");
    }
}

 

이후 HttpSecurity에서 이를 사용해 특정 조건을 추가할 수 있습니다.

http
    .authorizeRequests()
    .requestMatchers(new CustomRequestMatcher()).authenticated()
    .anyRequest().permitAll();

 

2. HTTP 메소드로 제한

requestMatchers() 메서드를 사용해 HTTP 메소드에 따라 접근을 제어할 수도 있습니다. 예를 들어, POST 요청만 허용하고 싶을 때는 다음과 같이 설정할 수 있습니다.

http
    .authorizeRequests()
    .requestMatchers(HttpMethod.POST, "/api/secure").authenticated()
    .anyRequest().permitAll();

 

requestMatcher를 활용하는 다양한 예시

 

1. URL 패턴 매칭

http
    .authorizeRequests()
    .requestMatchers("/user/**").authenticated() // /user 경로 하위는 인증 필요
    .anyRequest().permitAll();

 

2. HTTP 메소드와 URL 조합 매칭

http
    .authorizeRequests()
    .requestMatchers(HttpMethod.POST, "/submit").hasAuthority("ROLE_USER") // POST 메서드로 /submit 접근 시 특정 권한 필요
    .anyRequest().permitAll();

 

3. 커스텀 조건 적용

 

위에서 언급한 CustomRequestMatcher 예시처럼 요청에 포함된 특정 파라미터를 기준으로 접근 제어를 할 수 있습니다.

 

주요 특징 및 활용 방안

 

정교한 보안 설정: requestMatcher를 통해 단순히 URL 경로가 아닌, 파라미터나 헤더, 메소드 등 다양한 조건을 포함해 세밀한 보안 제어가 가능합니다.

CSRF 예외 처리: CSRF 정책을 적용하거나 특정 경로에서 예외로 설정할 때 자주 사용됩니다.

 

이처럼 requestMatcher는 Spring Security의 보안 정책을 더욱 세밀하게 설정할 수 있는 유용한 도구로, 다양한 접근 제어 정책을 구축할 때 활용하기 좋습니다.

'Spring Security' 카테고리의 다른 글

Spring Security 인증 아키텍처  (0) 2024.10.31
FilterOrderRegistration 클래스 구조와 역할  (0) 2024.10.31
hasAuthority와 그 외의 다양한 표현식  (0) 2024.10.30
CSRF(Cross-Site Request Forgery)  (2) 2024.10.30
@Async  (0) 2024.10.29
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유