참조
발생 이슈
- spring security filterChain 메서드를 통해 커스텀 필터를 넣음
- 해당 필터는 Authorization 헤더가 존재하는 경우 SecurityContextHolder에 넣는 인가 필터
- 하지만
permitAll()
URL에는 Authoriziation 헤더가 필요 없음에도 불구하고 NPE 발생
- 즉, 인가 작업이 필요없는 요청에도 인가 작업을 수행하는 이슈
이슈 해결
- 이슈가 발생하는 이유는 해당 필터에서 예외/커스텀 예외가 발생했을 때 catch에서 잡아서 throw 통해 예외를 보내고 다음 필터를 거치지 않고 끝나기 때문
- 스프링 시큐리티에서는
ExceptionTranslationFilter
에서 요청이 인증이 필요한 지 확인 후 예외를 발생시키도록 되어 있음
- 즉, 커스텀 필터에서 예외가 catch된 상태에서 다음 필터로 넘어가고 인증이 필요한 요청인지 확인 후 예외 발생에 대한 결정