반응형
이번에는 필요없는 필터는 없애고 최적화를 진행하기 위해 Security Config를 리팩토링 했다.
1. SecurityConfig 리팩토링
- 앞의 게시글을 확인해보면 작성한 코드가 있기에 변경된 메서드만 설명하겠다.
- 일단 나는 ssl(서버 사이드 랜더링)이기 때문에 에러페이지, 메인페이지, 회원가입, 로그인, 정적 리소스는 모두 접근을 허가해줬다.
- 여기서 특히 바뀐건 addFilterBefore() 이것이다. jwtAuthorizationFilter 다음 바로 customAuthenticationFilter로 가도록 했다.
@Bean
public SecurityFilterChain filterChain(
HttpSecurity http,
CustomAuthenticationFilter customAuthenticationFilter,
JwtAuthorizationFilter jwtAuthorizationFilter
) throws Exception {
log.debug("[+] WebSecurityConfig Start !!! ");
return http
.httpBasic(AbstractHttpConfigurer::disable)
.csrf(AbstractHttpConfigurer::disable)
.cors(cors -> cors.configurationSource(corsConfigurationSource()))
.authorizeHttpRequests(authorize -> authorize
.dispatcherTypeMatchers(DispatcherType.FORWARD).permitAll()
.requestMatchers(
new AntPathRequestMatcher("/main/rootPage"),
new AntPathRequestMatcher("/error.html"),
new AntPathRequestMatcher("/signUp/form"),
new AntPathRequestMatcher("/signUp/action/createUser"),
new AntPathRequestMatcher("/images/**"),
new AntPathRequestMatcher("/css/**"), // 정적 리소스의 jwt필터 접근 로그가 남지만 실제로 필터가 돌아가지 않고 바로 다음으로 넘어가니 로그에 남는다고 신경쓰지 말자
new AntPathRequestMatcher("/js/**"),
new AntPathRequestMatcher("/login"),
new AntPathRequestMatcher("/favicon.ico"),
new AntPathRequestMatcher("/")
).permitAll()
.anyRequest().authenticated()
)
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.addFilterBefore(jwtAuthorizationFilter, UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(customAuthenticationFilter, JwtAuthorizationFilter.class)
.build();
}
반응형
'Spring Security' 카테고리의 다른 글
Spring Security6 - Authentication(인증) (1) | 2023.10.21 |
---|---|
Spring Security와 CORS: 크로스 도메인 요청 처리 기법 알아보기 (0) | 2023.10.21 |
Spring Boot 3.1 & Spring Security 6: JWT 검증 리팩토링 (11편) (2) | 2023.09.04 |
Spring Security 6 이해하기: 동작 원리와 보안 기능 탐구 (0) | 2023.09.04 |
Spring Boot 3.1 & Spring Security 6: 로그인 프로세스 및 JWT 토큰 동작 설명 (10편) (0) | 2023.08.08 |