Direct answer

The token exp timestamp is earlier than the verifier's current time. Decode the claim, confirm seconds versus milliseconds, and obtain a new token through the intended flow.

Where this error appears

JWT authentication

Root cause

The token may genuinely be expired, generated with milliseconds instead of seconds, checked on a host with incorrect time, or reused after a session was revoked.

Minimal reproduction

{"exp": 1700000000}

Corrected example

Issue a new short-lived access token through the trusted refresh or login flow. Do not edit the payload; that invalidates the signature.

Verify the fix

Decode exp as Unix seconds, compare it with trusted server UTC, then verify the signature and claims.

Things to check

  • Decoding is not signature verification.
  • Keep clock-skew allowances small and explicit.

Authoritative reference

Confirm version-specific behavior in RFC 7519