250x250
jhs0129
프로그래밍
jhs0129
전체 방문자
오늘
어제
  • 분류 전체보기
    • 자격증
      • SQLD
      • 정보처리기사
    • 프로젝트
      • html csss js - todolist
      • JSP 방명록
      • 졸업작품
    • 공부기록
      • Java
      • Spring
      • Spring Security
      • Algorithm
      • JPA
      • DB
      • Servlet JSP
      • html
      • 기술공유
    • 잡다한 생각

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • spring data jpa
  • nhn cloud 강의
  • rest docs
  • NHN Cloud
  • spring framework
  • Spring Security Login
  • spring
  • Spring Security
  • 스프링시큐리티
  • spring boot
  • AWS
  • 프로젝트
  • cicd
  • github
  • codedeploy
  • EC2
  • JPA
  • oAuth2
  • 스프링
  • 스프링 프레임워크

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
jhs0129

프로그래밍

스프링 부트 한무 403 Error
공부기록/기술공유

스프링 부트 한무 403 Error

2023. 11. 15. 16:24
320x100
반응형

배경

백엔드 프론트엔드 각자 열심히 개발을 진행하면서 드디어 프론트쪽 UI작업이 어느정도 끝나고 API 연동 시점에서 계속해서 403 에러가 터지기 시작했다..

 

분명 로컬에서 잘 작동을 했고 이미 모든 권한에 관련된 것들은 처리를 해둔 상태인데 도데체 왜???

반응형

문제

에러가 발생한 이유는 되게 간단했다

develop 환경에서 JPA.ddl-auto 설정 값을 none으로 설정을 해뒀더니 개발을 진행하면서 변경된 엔티티 반영이 되지 않아서 SQLSyntaxErrorException 이 발생하게 되었다

그럼 여기서 이해가 되지 않는 점은 예외가 발생하면 아래와 같이 500에러가 터지기를 기대했는데 왠걸? 403????!?

무한 403에러가 나는 것은 바로 시큐리티에서 찾을 수 있었다

AuthorizationFilter

Security를 사용을 하면서 403에러는 별다른 설정이 없다면 주로 AuthorizationFilter에서 터지게 되는데 여기서 문제점을 찾을 수 있었다

 

위 사진에서 requestDispatcherPath 는 요청 들어온 URI를 나타내는데 내가 요청한 URI는 /api/v1/~~ 임에도 불구하고 /error 로 요청이 들어간 것을 확인 할 수 있다

이로 인해 /error 에 대해서는 권한 설정을 해두지 않았고 계속해서 403 에러가 발생하였다

원인

/error 로 요청이 변경 된 이유는 아래에서 확인 할 수 있는데

기본적으로 처리되지 않은 에러에 대해서 Spring boot는 내부적으로 /error경로로 포워딩을 시키는 것을 알 수 있다

 

320x100

해결 방법

이를 해결하기 위해서 필터 가장 앞단에 ExceptionHandlerFilter를 새로 하나 만들어 두었고 처리되지 않은 에러들에 대해서 모두 500에러로 그리고 프론트와 약속한 구조로 응답값을 보내도록 설정을 해두었다

또한 서버쪽에서 로그를 남겨 주기적으로 해당 예외들에 대해서 처리가 필요할 경우 Filter나 ControllerAdvice에서 예외 반환 값들을 업데이트를 하도록 결정을 했다

 

단순히 Database 테이블 구조가 맞지않아서 생긴 문제로 인해 이렇게 많은 부분이 연관되서 정말 오랫동안 삽질을 한 것 같다…ㅜ

 

참고

Exception Handling in Spring MVC

 

Exception Handling in Spring MVC

NOTE: Revised April 2018 Spring MVC provides several complimentary approaches to exception handling but, when teaching Spring MVC, I often find that my students are confused or not comfortable with them. Today I'm going to show you the various options avai

spring.io

 

320x100
반응형

'공부기록 > 기술공유' 카테고리의 다른 글

RequestBody Runtime시 동적 주입  (0) 2023.11.15
??? : 어딜 보시는 거죠 그건 제 잔상입니다만?!?  (0) 2023.11.13
Redis 사용기  (2) 2023.11.12
이력서 저장 테이블 구조 재구성  (0) 2023.11.10
Git Branch Linear  (0) 2023.11.06
    '공부기록/기술공유' 카테고리의 다른 글
    • RequestBody Runtime시 동적 주입
    • ??? : 어딜 보시는 거죠 그건 제 잔상입니다만?!?
    • Redis 사용기
    • 이력서 저장 테이블 구조 재구성
    jhs0129
    jhs0129
    공부기록 남기기

    티스토리툴바