Archive/예전 TIL

ADMIN 권한 검증 시 에러 문제

khu2172 2025. 2. 11. 11:40

ADMIN 권한 검증 시 에러 문제

 

문제: USER 권한으로 ADMIN 권한 전용 경로에 접근 시 로그에는 ForbiddenException이 발생하지만, 응답이 적절히 처리되지 않아 서버 에러가 발생(ADMIN 권한 검증 시 오류 발생)

 

원인:

응답 반환 누락

- authenticate 메소드에서 관리자 권한을 확인하고, 권한이 없으면 ForbiddenException을 던짐.

- doFilterInternal 메소드에서도 이 예외를 catch해서 응답을 처리하는 구조임.

- 하지만, doFilterInternal 메소드에서 응답 누락 문제가 발생하였고, 이 때문에 에러가 발생하였음.

 

해결:
doFilterInternal 메소드에서 응답 반환을 하게 수정했음

- authenticate 메소드에선 예외를 던지기만 할 뿐, 응답 반환은 하지 않음. 인증 실패를 알려주기만 하는 것임.

- 응답 반환을 포함하는 예외 처리 자체는 doFilterInternal 메소드에서 이뤄지게 수정하였음.

 


이중필터 문제라고 생각하였으나, 잘 생각해보니 그냥 doFilterInternal메소드에서 응답 반환을 누락한 게 본질적 문제였음.

authenticate 메소드에서 ForbiddentException 예외 던지기를 하고, doFilterInternal 메소드에서 ForbiddentException 예외를 catch하여 상태 코드 및 문구를 응답 반환하는 구조임. 두 메소드가 복잡하게 얽혀 있어서 이중필터라고 볼 수도 있지만, 응답 처리의 책임을 분리한 방식이고, 응답 처리의 중복을 피하는 방식을 사용함으로써 '응답 처리의 중복'을 피한 것이다.