Debug

JWT token - the token can't be used before ~ 오류 발생

Bong Gu 2020. 12. 30. 17:43
728x90

JWT

the token can't be used before ~ 오류 발생

문제

  • jwt token 생성 전에 해당 토큰을 사용하여 에러로그가 발생되었다.

    problem1

    problem2

    • 만료시간을 +7일로 설정하였으므로 1초 전에 해당 토큰을 사용한것으로 보여진다.

token을 생성하여 응답한 값으로 담아서 요청하는데 이것이 가능한가..?
구글링…

원인

  • 서버가 여러대인 경우, 서버간 바라보는 시간의 미세한 차이로 인해 발생할 수 있다고 한다.
    • 예를들어, 5번 api 서버에서 토큰을 발행하여 6번 api 서버로 요청 시, 6번 서버가 1초 전을 보고있다면 문제가 발생할 수 있다.

해결

  • JWTverifier 에서는 acceptLeeway라는 옵션을 통해 오차를 인정해 줄 수 있다고 한다.
  this.jwtVerifier = JWT.require(algorithm).acceptLeeway(2).build();
  • Java Doc

    aceeptLeeway

검증

  • 기존 jwtVerfier 설정

    before

  • token 검증 부

    checkToken

  • testCase

    testCase

    • 2초 후에 발행되는 token을 생성 후, token을 검증한다.

    error

    • 문제와 동일한 에러발생
  • jwtVerfier 에 acceptLeeway 설정

    after

  • testCase 재실행

    pass

참고


728x90