2.특정 엔드포인트에 권한 부여
/endpoint 경로로의 요청은 USER 권한이 있는 사용자만 접근 가능하도록 지정,
그 외 나머지 모든 경로(/**)는 인증된 모든 사용자가 접근 가능
→ /endpoint도 /** 경로에 매칭되지만, /endpoint 경로는 권한이 필요하도록 적용됨
SecurityConfig.java
@Bean
public SecurityFilterChain web(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authorize) -> authorize
.requestMatchers("/endpoint").hasAuthority("USER")
.anyRequest().authenticated()
)
// ...
return http.build();
}2. URL 패턴 매칭 방법
스프링 시큐리티는 URL 패턴 매칭을 위해 크게 2가지 방식을 제공함
2-1. Ant 기반 매칭
Ant는 Spring Security에서 요청 경로를 매칭할 때 사용하는 기본 옵션 언어로 사용됨
사용 예시
SecurityConfig.java
// /resource/** 하위 모든 경로는 USER 권한이 있는 사용자만 접근 가능
http
.authorizeHttpRequests((authorize) -> authorize
.requestMatchers("/resource/**").hasAuthority("USER")
.anyRequest().authenticated()
)2-2. 정규 표현식 활용 매칭
보다 엄격한 매칭을 위해서는 정규 표현식 활용 가능
SecurityConfig.java
http
.authorizeHttpRequests((authorize) -> authorize
.requestMatchers(RegexRequestMatcher.regexMatcher("/resource/[A-Za-z0-9]+")).hasAuthority("USER")
.anyRequest().denyAll()
)2-3. 그 외 HTTP 요청 메서드 기반 매칭
모든 GET 요청은 read 권한이 있어야 하며, 모든 POST 요청은 write 권한이 있어야함
SecurityConfig.java
http
.authorizeHttpRequests((authorize) -> authorize
.requestMatchers(HttpMethod.GET).hasAuthority("read")
.requestMatchers(HttpMethod.POST).hasAuthority("write")
.anyRequest().denyAll()
)Last updated on