JWT Parser

Go 언어로 개발하면서 JWT 파서로 jwt-go 패키지를 사용하고 있다. 패키지 사용 중 겪은 경험을 기록해두려 한다.

  • 문제: JWT Payload 내 19자리의 숫자 입력 값을 추출 후 출력하면 값이 달라져 있는 상황
  • 원인: 파서에서 숫자 값을 모두 float64 타입으로 취급
  • 해결: 위의 GitHub Issue 코멘트를 참고하여 JSONNumber 플래그와 Custom Struct Type 사용

수신한 JWT를 https://jwt.io 사이트에서 Decode 해서 Payload 값을 확인하며 문제를 검토했었는데, 사이트에서도 값이 바뀌어 보이고 있었다. 그래서 올바른 방법으로 해결을 해놓고서도 Decode 된 값과 코드에서 추출한 값이 달라 삽질을 좀 했다. 제대로 된 값은 여기에서 확인을 할 수 있었고, 위의 해결 방법으로 올바르게 파싱되었다.

jhgu