새소식

인기 검색어

개인공부/SPRING_BOOT

[Spring Security] - JwtAuthenticationFilter으로 커스텀 필터를 적용 후 SecurityConfig 클래스의 permitAll() 이 적용되지 않았던 이유

  • -

https://velog.io/@choidongkuen/Spring-Security-SecurityConfig-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%9D%98-permitAll-%EC%9D%B4-%EC%A0%81%EC%9A%A9%EB%90%98%EC%A7%80-%EC%95%8A%EC%95%98%EB%8D%98-%EC%9D%B4%EC%9C%A0

 

[Spring Security] - SecurityConfig 클래스의 permitAll() 이 적용되지 않았던 이유

안녕하세요 이번 포스팅에서는 Better 팀의 Iter 프로젝트 에서 진행했던 Spring Security 을 이용한 회원 인증/인가 시스템에서 제가 겪었던 문제점과 새롭게 알게된 점을 주제로 작성하고자합니다

velog.io

"WebSecurityCustomizer에서 설정한 URL에 대한 접근을 허용하는 구성(permitAll())이 있더라도, TokenAuthenticationFilter에서는 해당 URL에 대한 요청도 가로채게 됩니다. 이 필터에서는 토큰의 유효성을 확인하고 사용자를 인증하기 때문에, 접근 권한이 없는 경우에는 AccessDeniedException이 발생할 수 있습니다.

따라서 WebSecurityCustomizer에서 설정한 특정 URL에 대한 접근을 허용하는 설정이 있더라도, 만약 해당 URL에 접근하는 요청에 토큰이 포함되어 있고 그 토큰이 유효하다면, TokenAuthenticationFilter에서는 해당 요청에 대해 인증 처리를 시도하게 됩니다."

 

원인: 

permitAll()을 하더라도 header에 Authorization 헤더가 존재하지 않은 요청들은 모두 JwtAuthenticationFilter에 걸리기에 접근이 불가능한 것이었다

 

해결방안 : 

예외가 발생해도 filterChain.doFilter(request, response)로 다음 필터로 처리가 넘어갈 수 있게끔 예외처리 해주면 된다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.