Spring

Controller Test 403 forbidden 해결

용히콩 2023. 12. 5. 23:58

Controller 테스트 코드를 작성하던 중 authentication에 userDetails를 넣어줬음에도 불구하고 403 forbidden 에러가 발생했다.

에러 코드를 살펴보니, 아래 사진과 같이 MockHttpServletRequest에 CSRF 토큰이 들어간 것을 확인할 수 있었다.

 

하지만 본 프로젝트에서는 아래와 같이 WebSecurityConfig 에서 csrf를 사용하지 않도록 설정했기 때문에 CSRF 토큰이 설정된 것이 더욱 이상하다고 생각했다.

 

Controller 테스트를 위해 강의에서 나온대로 코드를 작성했고, 이 과정에서 WebSecurityConfig가 제외된 것을 확인할 수 있다.

 

결과적으로, WebSecurityConfig가 제외되면서 csrf를 disable한 것이 같이 제외됐기 때문에 CSRF 토큰이 설정된 것으로 유추할 수 있었다.

 

따라서, 아래와 같이 .with(csrf()) 코드를 추가했더니 테스트에 성공했다 !

 

사실 Security 쪽은 어떤 이유에서 발생했고 왜 이렇게 사용하는지 잘 몰라서 원인을 제대로 분석하지 못했다.

조금 더 노력해서 원인을 파악하고 분석해서 정확히 이해하고 넘어갈 수 있도록 노력하겠다!