SecurityConfiguraion
에서 .permitAll()
를 설정한 uri 요청(join, login 등)에도 JwtFilter를 거치면서 Authorization header에 관한 에러 로그 (authorization header가 없다는 로그)가 계속 남았다.
.permitAll()
을 하면 filter를 아예 통과할거라 생각한 부분이 문제가 되었다.기능에는 문제가 없지만, 로그가 지속적으로 찍히는 것은 좋지 않기 때문에 이를 해결해야 한다.
⭕️ 해결
https://github.com/spring-projects/spring-security/issues/4368
아래 코드처럼 헤더가 없거나 형식이 다른 조건을 묶어서 처리했었다.
//헤더 형식 확인
if (authorizationHeader == null || !authorizationHeader.startsWith("Bearer ")){
log.error("잘못된 헤더 형식 : {}", authorizationHeader);
filterChain.doFilter(request, response);
return;
}
Authorization header가 null일 때는 authentication에 null값을 넣어서 필터를 통과시켰다.
그리고 헤더가 있으나 헤더의 형식이 바르지 않을 때만 에러 로그를 찍도록 바꾸었다.
//헤더 형식 확인
if(authorizationHeader == null){
SecurityContextHolder.getContext().setAuthentication(null);
filterChain.doFilter(request, response);
return;
}
String token = "";
if (authorizationHeader.startsWith("Bearer ")){
token = authorizationHeader.replace("Bearer ", "");
} else{
log.error("Authorization 헤더 형식이 틀립니다. : {}", authorizationHeader);
filterChain.doFilter(request, response);
return;
}
몇 시간 동안 헤매다가 덕분에 해결했습니다 감사합니다!