Un JSON Web Token tiene tres partes separadas por puntos: una cabecera, un payload y una firma. La cabecera y el payload son objetos JSON codificados en base64url, y la firma demuestra que no se modificaron. En HS256, HS384 y HS512 la firma es un HMAC de las dos primeras partes calculado con un secreto compartido y el hash SHA-256, SHA-384 o SHA-512.
El payload contiene claims como sub (sujeto), iat (emitido en) y exp (expiración), ambos en segundos desde 1970. Cualquiera puede leer un JWT, porque codificar no es cifrar, así que nunca pongas secretos en el payload. La firma solo garantiza la integridad: un servidor que conoce el secreto puede comprobar que el token es genuino y no ha cambiado. Esta herramienta firma en tu navegador con la API WebCrypto.