웹/Spring

Spring Security 구조에 대해서 -Security Filters

컴퓨터과학 2023. 12. 9. 17:50

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