▪ 배경
토큰 인증은 클라이언트가 서버로 토큰을 전송하면, 서버가 이 토큰의 유효성을 확인한다.
유효성을 통과하지 못하는 이유는 여러가지가 있다.
- 토큰의 기한이 만료되었을 때
- 토큰이 조작되었을 때
- 지원하지 않는 유형의 토큰일 때
이후, 동작 흐름은 AuthenticationEntryPoint 구현체를 호출하고 같은 예외 메시지를 전송하게 된다.
하지만
토큰 기한이 만료된 경우에는 클라이언트가 토큰 재발급을 요청할 수 있도록, 서버에서 메시지를 구분해주어야 한다.
▪ 해결 방안
기존의 필터 체인은 기본적인 인증과 권한 부여 기능을 제공하지만, 특정 예외 상황을 처리하기에는 유연성이 부족하다는 것을 깨달았다.
그래서 필터 체인을 세밀하게 제어할 필요성을 느꼈고, Spring Security 프레임워크에서 FilterChain의 작동 방식을 깊이 이해해보았다.
필터 체인은 순서대로 실행되며, 각 필터의 요청과 응답을 가로챌 수 있다는 것을 알게 되었다.
그래서 새로운 Filter를 생성해 기존 Filter의 예외를 가로채도록 코딩했고, 이 예외 처리에서 원하는 에러 메시지를 전송할 수 있게 하였다.
▪ 결과
그 결과, 토큰이 만료된 경우를 따로 예외 메시지로 전송할 수 있게 되었고, 이 메시지를 통해 새로운 토큰을 요청할 수 있게 되었다.
▪ 느낀점
기본 제공 기능을 넘어서 해결책을 모색하며, 프레임워크의 동작을 깊이 이해하고 이를 응용할 수 있는 능력을 기를 수 있었다.
'개발 지식 > Trouble Shooting' 카테고리의 다른 글
표준화된 Framework의 단점 (0) | 2024.08.16 |
---|---|
JavaScript에서 데이터 전달하는 4가지 방법 (0) | 2024.08.16 |