[SpringSecurity] URL 더블슬래시 허용

2022. 5. 25. 16:51 Spring Framework/Spring security

spring boot 2.5 버전 이상 사용시

Spring Security의 기본적인 정책은 URL에 더블슬래시가 들어가는 것을 허용하지 않는다.

예를 들면, test라는 리소스를 요청할 때 > http://localhost:8080/api/test  라는 URL을 사용한다고 해보자.

WEB 소스에서 baseURL 을 잘못설정 뭐 그러한 이유로 http://localhost:8080/api//test 로 요청이 들어오면

서버에서는 아래와 같은 에러가 발생한다.

org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL was not normalized.
	at org.springframework.security.web.firewall.StrictHttpFirewall.getFirewalledRequest(StrictHttpFirewall.java:248)

 

이를 위해서는 Spring Security Config 파일에 아래와 같은 내용을 넣는다.

더블슬래시를 허용해주는 놈을 Bean으로 등록한 후 WebSecurity 설정에 추가해준다.

@Override
public void configure(WebSecurity web) throws Exception {
    web.httpFirewall(defaultHttpFirewall());
}
 
@Bean
public HttpFirewall defaultHttpFirewall() {
    return new DefaultHttpFirewall();
}

 

출처 : https://godd.tistory.com/40