JWT
the token can't be used before ~ 오류 발생
문제
jwt token 생성 전에 해당 토큰을 사용하여 에러로그가 발생되었다.
- 만료시간을 +7일로 설정하였으므로 1초 전에 해당 토큰을 사용한것으로 보여진다.
token을 생성하여 응답한 값으로 담아서 요청하는데 이것이 가능한가..?
구글링…
원인
- 서버가 여러대인 경우, 서버간 바라보는 시간의 미세한 차이로 인해 발생할 수 있다고 한다.
- 예를들어, 5번 api 서버에서 토큰을 발행하여 6번 api 서버로 요청 시, 6번 서버가 1초 전을 보고있다면 문제가 발생할 수 있다.
해결
- JWTverifier 에서는 acceptLeeway라는 옵션을 통해 오차를 인정해 줄 수 있다고 한다.
this.jwtVerifier = JWT.require(algorithm).acceptLeeway(2).build();
Java Doc
검증
기존 jwtVerfier 설정
token 검증 부
testCase
- 2초 후에 발행되는 token을 생성 후, token을 검증한다.
- 문제와 동일한 에러발생
jwtVerfier 에 acceptLeeway 설정
testCase 재실행