JWT 토큰 검증 에러 - io.jsonwebtoken.security.signatureexception

이형석·2024년 4월 30일
0

WelCheck 프로젝트 

목록 보기
17/22

문제상황
JWTFilter(인가 기능)를 추가한 후 테스트를 해보기 위해, 먼저 Postman을 이용하여 /join(회원가입)을 요청하였다. 그런데 Postman에는 403에러가 응답되고, 콘솔창에는 아래와 같은 에러메시지가 출력되었다.

io.jsonwebtoken.security.signatureexception: jwt signature does not match locally computed signature. jwt validity cannot be asserted and should not be trusted.

분명히 회원가입과 로그인기능까지 테스트했고 JWT토큰이 응답되는 것까지 확인한 후 구현하였다. 그런데 뜬금없이 /join 요청이 거부되니 황당한 일이었다.

해결과정
회원가입을 요청했는데 엑세스가 거부되고, 에러메시지에 따르면 토큰을 검증하고 있으니 어떤 전차로 이런 일이 발생하는지 전혀 예상이 안갔다. 따라서 우선 다음 사항들을 확인해보았다.
- 일단 당연히 먼저 Configuration클래스에서 인가경로 설정 메서드의 requestMatcher()를 확인했지만 이상이 없었다. 애초에 건들지도 않았다.
- JWTFilter를 추가한 위치 즉, 필터의 순서가 문제인가 했지만 정상적으로 로그인필터 전 위치에 JWTFilter가 추가되어 있었다.

에러를 구글링 해 보아도 잘못된 토큰을 제대로 검증하는 법만 나왔다. 나의 경우는 애초에 토큰을 검증을 하면 안 되는 상황인데 도저히 해결할 방법을 찾기 어려웠다. 그래서 주변인들에게 도움을 구해보고자 했지만 내 주변에서는 그럴만한 사람을 찾기 어려웠다.
마지막으로 JWT강의를 들은 유튜브영상의 댓글에 질문을 남겨보았다.

문제 해결

말씀대로 내가 Postman으로 /join 을 요청할 때, 헤더에 Authorization을 포함하여 요청한 것(JWT토큰을 넣어서 요청한 것)이 문제였다.
알고보니 굉장히 허무하고 어이없는 실수였고 충분히 유추 가능한 문제였던 것 같다.

그리고 친절하고 그것도 엄청 빨리 답해주셔서 감사했다. JWT에 관한 무료강의도 얼마 없는데 개인적으로 그 중 가장 좋아보였고 Oauth강의, SpringSecurity구조에 대한 강의까지 있어서 나중에 모두 시청할 예정이다.

영상 링크
https://www.youtube.com/watch?v=7B6KHSZN3jY&lc=UgyCJpqryEMRGPM3VRd4AaABAg.A2oAoGFwRnzA2ocqkDvh8o

profile
금융IT 개발자

0개의 댓글