작성
·
347
·
수정됨
0
안녕하세요 ! 강사님
좋은 강의 잘 보고 있습니다.
Feign의 예외처리에서 강의와 다른부분이 발생하여 질문 남깁니다.
FeignErrorDecoder를 통해 예외 처리시 .
[user-service] [-auto-1-exec-10] .w.s.m.a.ResponseStatusExceptionResolver : Resolved [org.springframework.web.server.ResponseStatusException: 404 NOT_FOUND "사용자의 주문이 비었습니다"]
위 로그가 user-service에서 error catch를 통해 잘 나오는 것을 확인했습니다.
(09:36)강의영상에서는 404 Error를 전달하여 포스트맨 응답에서 Error msg까지 출력이 되었지만,
저의 경우에선
APIGatgeway에서의 로그및 포스트맨응답에
Global Filter End : response id -> 403 FORBIDDEN
으로 응답이 보내집니다.
이전 강의 부분(정상 응답)에서 해당 문제가 없었지만, 에러 응답시 403응답으로 처리되어지는 부분에 대해서
추가적으로 ApiGateWay에 대해서 github에서는 따로 handling이 없어서 추가적으로 handler를 등록하여 적용되어야하는 부분인지 여쭤봅니다 .
++
해당부분
user-service의 WebSecurity
특정 ip 통과부분에
실제 ip(자신의 ip)를 누락하였네요.
Error에 대한 부분도 응답이 됩니다.
추가적으로 error에 대해서 403으로 응답이 되는부분은
https://colabear754.tistory.com/182
해당글을 참고하시면 될것같습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
올려주신 질문 잘 보았습니다. Feign 클라이언트를 사용하여 예외 처리 시 ‘user-service’에서 발생한 ‘404 NOT_FOUND’ 같은 예외가 정상적으로 포스트맨에 출력되지 않는 문제에 대해 여쭤보시는군요.
해당 문제가 발생한 주된 이유는 Spring Security 설정에 있어서 ‘CSRF’ 보호 기능 때문일 수 있습니다. Spring Boot는 기본적으로 CSRF 보호를 활성화 상태로 두기 때문에, POST, PUT, DELETE 요청에 대한 Actuator 엔드포인트가 403 Forbidden 에러를 받게 됩니다. 따라서 사용자 인증이 없는 비브라우저 클라이언트(war) 서비스를 만들 경우 CSRF 보호를 비활성화하는 것이 권장됩니다.
또한, Spring Boot 에러 처리에 대해서는 Spring Boot가 sensible한 방식으로 /error
매핑을 통해 모든 에러를 처리하며, JSON 혹은 HTML 형태로 에러의 상세 내용을 제공합니다.
기본 설정을 변경하고자 하신다면 해당 소스를 참고하시면 됩니다:
CSRF 보호 비활성화에 관한 정보: Spring Boot Reference Documentation > 13. Production-ready Features > 13.2. Endpoints > 13.2.3. Security > Cross Site Request Forgery Protection
에러 처리 방식에 관한 정보:
에러가 403 Forbidden
으로 응답되는 부분에 대해 추가적으로 ApiGateway에 대한 예외 처리가 필요할 수도 있습니다. 이 경우는 별도의 핸들러 등록으로 해결할 수 있을 것으로 보입니다.
주신 링크를 통해 관련 정보를 참고하시면 도움이 될 것 같습니다. 설정 누락 또는 특정 IP 통과를 위한 WebSecurity 설정 부분도 다시 확인해 보시기 바랍니다.
도움이 되었길 바라며, 추가적인 질문이 있으시면 언제든지 문의 주세요.