본문으로 바로가기

자사 시스템과의 인증을 위해 JWT 를 사용중인데, 잘 되다가 갑자기 아래와 같은 에러가 발생 하였습니다.

JWTVerificationException :
com.auth0.jwt.exceptions.InvalidClaimException: The Token can't be used before Tue Feb 13 19:35:57 KST 2024.

해당 오류 발생 위치는

JWTVerifier verifier = JWT.require(algorithm).withIssuer(TokenUtilForSupport.WILDCARD_DOMAIN).build();

원인으로는

요청 하는 서버의 시간이 인증하는 서버의 시간보다 빨라서 발생 한것으로 보입니다.

해결 방법으로는 아래와 같이 acceptLeeway 옵션을 주면 되는 것인데, 값은 long 으로 초 단위 입력 하시면 됩니다.

JWTVerifier verifier = JWT.require(algorithm).acceptLeeway(LEEWAY).withIssuer(TokenUtil.WILDCARD_DOMAIN).build();

타 블로그를 보면 2,5 정도 주던데 이렇게 주고 나서 처음에는 별 문제가 없다가 몇개월 뒤에는 다시 갭차이로 에러가 발생 하여, 넉넉하게 줬습니다.