728x90
securityMatcher()
- securityMatcher 메소드는 특정 패턴에 해당하는 요청에만 보안 규칙을 적용하도록 설정할 수 있으며 중복해서 정의할 경우 마지막에 설정한 것으로 대체
→ 지금까지는 모든 요청에 대해서 위에서부터 순차적으로 검사
메서드 | 설명 |
securityMatcher(String... urlPatterns) | 특정 자원 보호가 필요한 경로를 정의 |
securityMatcher(RequestMatcher... requestMatchers) | 특정 자원 보호가 필요한 경로를 정의 → AntPathRequestMatcher, MvcRequestMatcher 등의 구현체를 사용 가능 |
패턴 설정
- HttpSecurity를 /api/로 시작하는 URL에만 적용하도록 구성
- Spring MVC가 클래스 경로에 있으면 MvcRequestMatcher가 사용되고, 그렇지 않으면 AntPathRequestMatcher가 사용
securityMatchers(Customizer<RequestMatcherConfigurer>)
- 다중 패턴 설정
- securityMatchers 메소드는 특정 패턴에 해당하는 요청을 단일이 아닌 다중 설정으로 구성해서 보안 규칙을 적용할 수 있으며 현재의 규칙은 이전의 규칙을 대체하지 않음 → 현재의 규칙은 이전의 규칙을 대체하지 않음 ⇒ 중복 가능
- 패턴 유형
// 패턴 1
http.securityMatchers((matchers) -> matchers.requestMatchers("/api/**", "/oauth/**"));
// 패턴 2
http.securityMatchers((matchers) -> matchers.requestMatchers("/api/**").requestMatchers("/oauth/**"));
// 패턴 3
http.securityMatchers((matchers) -> matchers.requestMatchers("/api/**")
.securityMatchers((matchers) -> matchers.requestMatchers("/oauth/**"));
추가 정리
- SecurityFilterChain은 여러 개일 수 있음
- @Order(n) 어노테이션을 이용하여 실행되는 SecurityFilterChain의 순서를 지정할 수 있고, requestMatcher에서 더 좁은 범위를 먼저 선언하는 것처럼 더 좁은 범위의 SecurityFilterChain을 먼저 선언하지 않으면 사용자의 의도대로 실행되지 않음
728x90
'Language > Spring Security' 카테고리의 다른 글
메서드 기반 권한 부여 - @PreFilter, @PostFilter (0) | 2024.07.31 |
---|---|
메서드 기반 권한 부여 - @PreAuthorize, @PostAuthorize (0) | 2024.07.31 |
표현식 및 커스텀 권한 구현 (0) | 2024.07.31 |
요청 기반 권한 부여 - HttpSecurity.authorizeHttpRequests() (0) | 2024.07.31 |
SameSite (0) | 2024.07.29 |