JWT payload formatting follows RFC 7519 with registered claims like sub, exp, iat, iss, aud. Public and private claims follow naming conventions.
At minimum include sub for the user identifier and exp for expiration time. Also include iat for issued at and iss for issuer.
Use IANA-registered claims like name, preferred_username, email, email_verified, picture, and locale for identity tokens.
Use reverse-domain naming for custom claims to avoid collision. For example https://api.example.com/role instead of just role.
The jti claim provides a unique identifier for the token enabling token revocation, replay detection, and audit log correlation.