spring security는 요청 기반 권한 확인, 메소드 기반 권한 확인을 설정할 수 있다.
요청 기반 권한 확인은 HttpSecurity 인스턴스를 사용하여 권한 규칙을 선언함으로써 적용된다.
@Bean
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(authorize -> authorize
.anyRequest().authenticated());
return http.build();
}
authorizeHttpRequests()
를 사용해서 특정 엔드포인트와, 권한을 지정해서 사용자 접근을 제어한다.
특정 엔드포인트와 권한을 매핑시켜, "이 엔드포인트는 인증을 받아야 하며, 인증된 사용자도 어떤 권한을 가진 사람만 볼 수 있다" 등의 형식으로 지정하는 것이다.
authorizeHttpRequests()
을 통해 요청 권한 규칙이 설정되면 내부적으로 AuthorizationFilter
가 요청의 권한 검사를 수행한다.
요청 엔드포인트를 확인하는 과정은 설정한 순서대로 확인하기 때문에, 상세 엔드포인트를 위로 올리고 넓은 엔드포인트를 아래로 내려 설정해야 한다.
requestMatchers(String... urlPatterns)
// Ant 패턴 문자열, 정규표현식 사용이 가능하다.
requestMatchers(RequestMatchers... requestMatchers)
// Requestmatcher의 구현체로 AntPathRequestMatcher, MvcRequestMatcher 등의 구현체를 사용한다
requestMatchers(HttpMethod method, String... urlPatterns)