Spring

Security - 2

으엉어엉 2024. 12. 14. 15:47
728x90

DisableEncodeUrlFilter 

커스텀 SecurityFilterChain을 생성해도 등록되며 비활성은 아래와 같이 세션 관리 설정을 disable 하면 된다.

http
        .sessionManagement((manage) -> manage.disable());

 


SecurityContextHolderFilter 

필터가 등록되는 목적은 이전 요청을 통해 이미 인증한 사용자 정보를 현재 요청의 SecurityContextHolder의 SecurityContext에 할당하는 역할을 수행하고, 현재 요청이 끝나면 SecurityContext를 초기화 한다. 또 로그인을 할 필요가 없게끔 한다.

    http
            .securityContext((context) -> context.disable());// 대부분 disable 하지 않는다.

 


HeaderWriterFilter

필터가 등록되는 목적은 HTTP 응답 헤더에 사용자 보호를 위한 시큐리티 관련 헤더를 추가하는 필터이다.

http
        .headers((headers) -> headers.disable());

 


 

CorsFilter 

필터가 등록되는 목적은 CorsConfigurationSource에 설정한 값에 따라 필터단에서 응답 헤더를 설정하는 필터이다.

http
        .cors((cors) -> cors.disable());

 


CsrfFilter

이 필터가 등록되는 목적은 CSRF 공격 방어를 위해 HTTP 메소드 중 GET, HEAD, TRACE, OPTIONS 메소드를 제외한 요청에 대해서 검증을 진행한다.
스프링 시큐리티의 CSRF 검증 방식은 토큰 방식이며 요청시 토큰을 서버 저장소에 저장 후 클라이언트에게도 전송하며, 그 후 해당하는 요청에 대해서 서버에 저장된 토큰과 비교 검증을 진행한다.

 

http
        .csrf((csrf) -> csrf.disable());

 


LogoutFilter

이 필터가 등록되는 목적은 인증 후 생성되는 사용자 식별 정보에 대해 로그아웃 핸들러를 돌며 로그아웃을 수행하는 필터이다.
기본적으로 세션 방식에 대한 로그아웃 설정이 되어 있기 때문에 JWT 방식이나 추가할 로직이 많을 경우 커스텀해야 한다.

http
        .logout((logout) -> logout.disable());

UsernamePasswordAuthenticationFilter 

이 필터가 등록되는 목적은 POST : “/login” 경로에서 Form 기반 인증을 진행할 수 있도록 multipart/form-data 형태의 username/password 데이터를 받아 인증 클래스에게 값을 넘겨주는 역할을 수행한다.
커스텀 SecurityFilterChain을 생성하면 자동 등록이 안되기 때문에 아래 구문을 통해서 필터를 활성화시켜야 한다.

http
        .formLogin(Customizer.withDefaults());

 


DefaultLoginPageGeneratingFilter

이 필터가 등록되는 목적은 로그인 설정에 대해 GET : “/login” 경로에 기본 로그인 페이지를 응답하는 역할을 수행한다.
이 필터는 여러 로그인 설정에 의존되며 가장 많이 사용하는 formLogin에서는 커스텀 SecurityFilterChain 등록시 아래와 같은 설정을 통해 사용할 수 있으며, 커스텀 로그인 페이지를 사용할 경우 제외된다

// 기본 사용
http
        .formLogin(Customizer.withDefaults());
        
// 커스텀 하더라도 아래와 같이 loginPage() 메소드를 다루지 않으면 기본 로그인 페이지 활성
http
        .formLogin((login) -> login.loginPage("/커스텀경로"));

DefaultLogoutPageGeneratingFilter

이 필터가 등록되는 목적은 GET : “/logout” 경로에 대해 기본 로그아웃 페이지를 응답하는 역할을 수행한다.
이 필터는 여러 로그인 설정에 의존되며 가장 많이 사용하는 formLogin에서는 커스텀 SecurityFilterChain 등록시 아래와 같은 설정을 통해 사용할 수 있다.

http
        .formLogin(Customizer.withDefaults());

 


BasicAuthenticationFilter 

이 필터가 등록되는 목적은 Basic 기반의 인증을 수행하기 위해 등록된다.
커스텀 SecurityFilterChain을 생성하면 자동 등록이 안되기 때문에 아래 구문을 통해서 필터를 활성화시켜야 한다

http
        .httpBasic(Customizer.withDefaults());

 


AuthorizationFilter

 

이 필터가 등록되는 목적은 SecurityFilterChain의 authorizeHttpRequests()를 통해 인가 작업을 진행한 값에 따라 최종적으로 인가를 수행한다.
커스텀 SecurityFilterChain에도 기본적으로 등록되며 인가를 설정하는 방법은 아래와 같다.

http
        .authorizeHttpRequests((auth) -> auth
                .requestMatchers("/").permitAll()
                .anyRequest().permitAll());
728x90

'Spring' 카테고리의 다른 글

Security - (3)  (0) 2024.12.14
security (1) - 동작원리  (0) 2024.11.23
1. Spring 실행  (0) 2024.06.24