So my understanding is that a JWT is signed by the server with a private key and its legitimacy verified by comparing the public key decrypted signature against the header + payload by both/either the server and client:
The tokens are signed by one party's private key (usually the server's), so that both parties (the other already being, by some suitable and trustworthy means, in possession of the corresponding public key) are able to verify that the token is legitimate.1
I'm just wondering what need is there for the client to verify the authenticity of the JWT? I understand the same mechanism is used for SSL, in which case client-side verification makes sense to me as the certificate contains the public key used by the client to encrypt the initial handshake. But I struggle to understand what benefit public verifiability serves in the case of JWTs. If the JWT were illegitimate, it'd fail on the server anyway, and the client isn't doing anything special aside from tacking it onto the request.
Couldn't just hashing with some private salt on the server satisfy the purpose it serves? The server verifies by hashing the payload with the same salt and comparing against the signature. In this case, only the server can verify, but so what?