[내배캠 Spring TIL] Spring Security 트러블슈팅
Java
Spring
2024년 10월 10일
Spring Security를 적용했을때, 모든 오류가 403으로 응답되는 이슈를 해결한 경험을 공유하려 한다.
이슈 발생 #
Spring Security를 적용하고 오류가 발생했을때 정상적인 오류가 발생하지 않고 status가 403으로만 응답되는 이슈가 발생했다.
원인 파악 #
구글링을 해보니 스프링 부트에서는 오류가 발생하면 /error
라는 URI로 매핑을 시도한다고 한다.
.authorizeHttpRequests((authorize) -> authorize
.requestMatchers("/auth/signin", "/auth/signup").permitAll()
.anyRequest().authenticated()
)
하지만 위의 코드처럼 /error
인증 제외 목록에 들어가 있지 않기 때문에 인증이 필요하게 된다. 따라서 403 응답이 발생하게 된다.
해결 #
.authorizeHttpRequests((authorize) -> authorize
.requestMatchers("/auth/signin", "/auth/signup", "/error").permitAll()
.anyRequest().authenticated()
)
위 코드처럼 /error
를 인증 제외 목록에 추가하면 해결할 수 있다.
.exceptionHandling(httpSecurityExceptionHandlingConfigurer -> httpSecurityExceptionHandlingConfigurer
.authenticationEntryPoint(((request, response, authException) -> {
handlerExceptionResolver.resolveException(request, response, null, authException);
})
)
)
그리고 AuthenticationEntryPoint
를 등록하여 해결할 수도 있다.