package jwt4j.checkers; import com.google.gson.JsonObject; import jwt4j.JWTConstants; import jwt4j.TokenChecker; import jwt4j.exceptions.InvalidTokenException; import java.time.Instant; public class NotBeforeChecker implements TokenChecker { private final int leewaySeconds; public NotBeforeChecker(final int leewaySeconds) { this.leewaySeconds = leewaySeconds; } @Override public void check(JsonObject payloadJson) { if (payloadJson.has(JWTConstants.NOT_BEFORE)) { long timeout = payloadJson.get(JWTConstants.NOT_BEFORE).getAsLong() - Instant.now().getEpochSecond() - leewaySeconds; if (timeout > 0) { throw new InvalidTokenException("Token will be valid in " + timeout + " seconds"); } } else { throw new InvalidTokenException("Required not before (nbf) claim not found"); } } }