Spring Security 구조에 대해서 -Security Filters
2023.12.09 - [웹/Spring] - Spring Security 구조에 대해서 - SecurityFilterChain
Spring Security 구조에 대해서 - SecurityFilterChain
2023.12.09 - [웹/Spring] - Spring Security 구조에 대해서 - FilterChainProxy Spring Security 구조에 대해서 - FilterChainProxy 2023.11.24 - [웹/Spring] - Spring Security 구조에 대해서 - DelegatingFilterProxy Spring Security 구조에 대
kwaksh2319.tistory.com
Security Filter들은 SecurityFilterChain API를 통해 FilterChainProxy에 삽입됩니다.
이 filter들은 인증,권한 부여, 취약점 보호 등 다양한 목적을 사용될수 있습니다.
filter들은 올바른 시간에 호출되도록 보장하기 위해 특정 순서로 실행됩니다.
예를들어, 인증을 수행하는 필터는 권한 부여를 수행하는 fiter보다 먼저 호출되어야 합니다.
일반적으로 Spring Security의 필터 순서를 알 필요는 없습니다. 그러나 필터의 순서를 알고 싶다면 FilterOrderRegistration 코드를 확인이 가능합니다.
코드를 한번 보겠습니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
//1.csrf 보호
.csrf(Customizer.withDefaults())
//2.인증필터
.authorizeHttpRequests(
//3.사용자 권한 확인
authorize -> authorize
.anyRequest().authenticated()
)
.httpBasic(Customizer.withDefaults())
.formLogin(Customizer.withDefaults());
return http.build();
}
}
보면
코드를 보면
첫번째는 CsrfFilter는 CSRF 공격을 보호하기 위해 호출합니다.
CSRF 이란?(사이트간의 위조 요청)
csrf공격은 사용자가 자신의 의지완느 무관하게 웹 어플리케이션에서 의도하지 않는 동작을 수행하도록 하는 보안 취약점을 말합니다. 간단히 말해서 공격자는 사용자가 이미 로그인한 웹사이트에 대해 악의적인 요청을 전송하도록 유도합니다.
(ex 피싱 이메일)
두번째 는 authenitcation filter(인증 필터)는 이 필터는 보내는 사용자의 신원을 확인하는 역할을 합니다.
세번째 는 authenitcation filter인증후 , 이 필터는 사용자가 요청한 작업을 수행할 권한이 있는지 검사합니다.
(ex 어드민 계정, 고객 계정)
참조:
https://docs.spring.io/spring-security/reference/servlet/architecture.html#servlet-print-filters
Architecture :: Spring Security
The Security Filters are inserted into the FilterChainProxy with the SecurityFilterChain API. Those filters can be used for a number of different purposes, like authentication, authorization, exploit protection, and more. The filters are executed in a spec
docs.spring.io