Skip to Content
Suffering builds character
아카이브18.spring Security스프링 시큐리티4.인가실습요청 기반2.특정 엔드포인트에 권한 부여

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 기반 매칭

AntSpring 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