저장을 습관화

에러 기록 - JsonWebTokenError: invalid signature 본문

공부/node.js

에러 기록 - JsonWebTokenError: invalid signature

ctrs 2023. 6. 22. 10:06

- 증상

회원 관리 기능, 로그인 후 자신의 정보 확인하는 기능 작성 중

정상적으로 로그인 되었음에도 받아온 토큰의 검증이 틀리는 문제 발생

 

아래는 관련 로그

JsonWebTokenError: invalid signature
    at C:(생략)\node_modules\jsonwebtoken\verify.js:171:19
    at getSecret (C:(생략)\node_modules\jsonwebtoken\verify.js:97:14)
    at module.exports [as verify] (C:(생략)\node_modules\jsonwebtoken\verify.js:101:10)
    at module.exports (C:(생략)\middlewares\auth-middleware.js:31:28)
    at Layer.handle [as handle_request] (C:(생략)\node_modules\express\lib\router\layer.js:95:5)
    at next (C:(생략)\node_modules\express\lib\router\route.js:144:13)
    at Route.dispatch (C:(생략)\node_modules\express\lib\router\route.js:114:3)
    at Layer.handle [as handle_request] (C:(생략)\node_modules\express\lib\router\layer.js:95:5)
    at C:(생략)\node_modules\express\lib\router\index.js:284:15
    at Function.process_params (C:(생략)\node_modules\express\lib\router\index.js:346:12)

 

- 원인

JWT를 생성하는 함수(jwt.sign)에서 사용한 시크릿키와

JWT를 검증하는 함수(jwt.verify)에서 사용된 시크릿키가 서로 달라 발생한 문제

 

JWT 생성 - ./route/auth.js

...(생략)...
const token = jwt.sign({ userId: user.userId }, "custom-secret-key");

...(이후 대충 JWT를 쿠키로 할당하고 export하는 코드)...

JWT 검증 - ./middlewares/auth-middleware.js

...(생략)...
const { userId } = jwt.verify(authToken, "customized-secret-key");
...(생략)...

 

- 해결 방법

각 줄마다 로그를 출력하게하여 진행이 막히는 곳을 찾음

JWT의 검증 부분에서 에러가 발생하는것을 확인함

이후 변수 authToken, 변수 선언, 변수 선언할때 사용한 변수의 선언...

쭉 되돌려가면서 로그 찍어 각 단계가 정상적으로 작동하고 있는지 확인함

그렇게 JWT의 생성까지 올라가게 되었고 두 파일의 시크릿키가 다르다는 것을 확인함

 

두 파일의 시크릿키의 내용을 맞춰주었고 에러가 잡힌것을 확인함

 

 

- 느낀점

현재 발생한 에러가 생각보다 큰 문제가 아닐 수도 있다..

코드 엎을 생각부터 하지말고 일단 차근차근 되돌려보자..