A JWT can fail because of expiry, a not-yet-valid time, wrong issuer or audience, key rotation, malformed transport, or a signature that does not verify. Decode header and claims only in a trusted local environment; a live bearer token may grant access to anyone who receives it. Reading the payload is not verification.
Check the expected algorithm and trusted verification key on the server, then validate exp, nbf, iss, and aud under a deliberate clock-skew policy. Confirm that timestamps use seconds and that a transport prefix or whitespace was not included in the token. Do not work around a failure by disabling signature checks. Log an error category and correlation ID, never the full credential.