JWT(Json Web Token) Deprecated, Decoding 에러 처리

msung99·2022년 11월 27일
0
post-thumbnail

이번 포스팅에서는 JWT 를 발급 및 파싱하는 과정에서 간혹 발생하는 오류인 DecodingException, Deprecated 에러에 대한 처리를 알아보겠습니다.

위 에러를 직면했을 때 많이 구글링을 해봤지만 자료가 그리 풍부하지는 않았던 것 같습니다. 저와 같이 동일한 에러를 마주치신분은 포스팅 내용을 참고하시면 도움이 될겁니다.


Jwts.parser() Deprecated 오류

우선 Jwts 라이브러리의 parser() 기능에 대해 간단히 짚고 넘어가보겠습니다. Jwts.parser() 란 토큰을 발급받고 그 토큰을 가진 사용자의 id가 무엇인지 알아내는 함수입니다.

문서를 보면 알수 있듯이, parser()대신 parserBuilder()를 쓰고 그 다음에 .build()를 붙이라고 합니다. 이를 그대로 따라하면 됩니다.

기존 코드가 아래와 같은 경우에 Jwts.parser() deprecated 에러가 발생했습니다. 보시듯이 취소선이 그려져있습니다.

아래처럼 parser() 가 아닌 parserBuilder() 를 사용해주면 문제가 해결됩니다. 취소선도 없어진 모습을 확인할 수 있습니다.

  • 위 설명에 따라서, parserBuilder() 뒤에 build() 를 붙여주는 것을 잊지맙시다.


io.decodingexception 오류 (JWT builer.signwith() 관련)

JWT builer.signwith() 함수를 사용해서 토큰을 생성하려던 도중에, signwith() 함수에 밑줄(취소선)이 그어지면서 사용이 불가능하게 되었습니다. sigwith() 에 커서를 가져다대고 문서를 읽어봤습니다.

보통 아래와 같은 형태로 signwth() 함수를 사용하는 경우가 있는데, 이 경우는 0.10.0 부터 지원하지 않는 형태입니다.

signWith(SignatureAlgorithm.HS512,"my_only_super_Secret_Key!!_example")

0.10.0 버전부터 signwith(key) 또는 signwith(Key, SignatureAlgorithm) 과 같은 형태를 사용해야 합니다. 저는 아래 코드처럼 전자와 같은 형태를 적용해서 해결했습니다.


참고

jsonwebtoken 도큐먼트

https://javadoc.io/doc/io.jsonwebtoken/jjwt-api/latest/index.html

decodingexception 오류

https://velog.io/@wjh2012/Spring-JWT-%EC%82%BD%EC%A7%88

profile
https://haon.blog

0개의 댓글