tevelop RSS 태그 관리 글쓰기 방명록
2023-01-05 22:43:20

Spring Security를 설정해보았는데 해놓고 정확히 모르는 부분이 많았다. 

그런데 다른 분의 문제를 해결하면서 어떻게 돌아가는지 알게 된 부분이 있다.

 

 

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .httpBasic().disable() // rest api 이므로 기본 설정 미사용
        .csrf().disable() // rest api 이므로 csrf 보안 미사용
        .formLogin().disable()
        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) // jwt 사용하므로 세션 미사용
        .and()
            .authorizeHttpRequests()
            .antMatchers("/api/users/**").permitAll()
            .anyRequest().authenticated()
        .and()
            .exceptionHandling().authenticationEntryPoint(new CustomAuthenticationEntryPoint())
        .and()
            .exceptionHandling().accessDeniedHandler(new CustomAccessDeniedHandler())
        .and()
            .addFilterBefore(new JwtAuthFilter(jwtUtil), UsernamePasswordAuthenticationFilter.class);

     return http.build();
}

 

.exceptionHandling().authenticationEntryPoint(new CustomAuthenticationEntryPoint())

이 부분은 헤더에 Authorization Token 을 넣어주지 않았을때 발생하는 Exception을 핸들링 하는 부분이었고(추정),

.exceptionHandling().accessDeniedHandler(new CustomAccessDeniedHandler())

이 부분은 권한에 관련된 Exception을 핸들링 하는 부분이었다.(추정)

 

이전에 적용을 하면서 알게 된 것 중에 하나가 시큐리티 관련된 에러는 ControllerAdvice 에서 못잡는다였는데, accessDeniedHandler는 ControllerAdvice에 잡히는 것이었다. 아마도 @PreAuthorize가 Controller단에서 실행되어서 일까????

 

일단 이 지식들이 정확하지 않으니 오늘은 적어두고 다음에 다시 공부해서 써야겠다.

'내일배움캠프 > TIL' 카테고리의 다른 글

2023/1/9  (0) 2023.01.09
2023/1/7  (0) 2023.01.07
2023/1/1 포스트맨에 토큰값 세팅하기  (0) 2023.01.03
2022.12.28  (1) 2022.12.28
2022.12.22  (2) 2022.12.22
tevelop. Designed by 코딩재개발.