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());
'Spring' 카테고리의 다른 글
Security - (3) (0) | 2024.12.14 |
---|---|
security (1) - 동작원리 (0) | 2024.11.23 |
1. Spring 실행 (0) | 2024.06.24 |