403 Forbidden403 Forbidden인증과 인가를 담당하는 보안 프레임워크
implementation 'org.springframework.boot:spring-boot-starter-security'
Filter Chain 이 요청을 가로챔AuthenticationManager 으로 인증 위임UserDetailsService 에서 사용자 조회 @Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http
.csrf(AbstractHttpConfigurer::disable) // .csrf().disable() 방식은 더 이상 사용 안함.
.httpBasic(AbstractHttpConfigurer::disable) // BasicAuthenticationFilter 비활성화
.formLogin(AbstractHttpConfigurer::disable) // UsernamePasswordAuthenticationFilter, DefaultLoginPageGeneratingFilter 비활성화
.addFilterBefore(jwtFilter, SecurityContextHolderAwareRequestFilter.class)
.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/login").permitAll()
.anyRequest().authenticated()
)
.build();
}
crsf : CSRF(Cross-Site Request Forgery) 보호를 비활성화
httpBasic : HTTP Basic 인증 방식을 비활성화
Authorization 헤더에 사용자 이름과 비밀번호를 평문으로 포함하는 방식으로, 현대적인 애플리케이션에서는 보안의 문제로 잘 사용하지 않음formLogin : 기본 로그인 폼과 관련된 필터를 비활성화
addFilterBefore : 필터의 순서를 지정해주는 역할
authorizeHttpRequests
.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/login").permitAll()
.requestMatchers("/api/admin/**").hasRole("ADMIN")
.requestMatchers("/api/user/**").hasRole("USER")