Ein signiertes JWT hat die Form header.payload.signature, jeder Teil base64url ohne Padding: Der Header nennt Algorithmus (alg), Schlüssel (kid) und Typ (typ), und die Payload enthält Claims wie iss, sub, aud, exp, nbf, iat und jti (RFC 7519 §4.1) sowie anwendungsspezifische Claims. Verschlüsselte JWTs haben fünf Teile. Die Payload eines signierten JWT kann jeder lesen, der das Token hat: Das Signieren schützt die Integrität, nicht die Vertraulichkeit.
Die Prüfung hat zwei Hälften: zuerst die Signatur, mit einem Algorithmus und einem Schlüssel, die der Verifizierer vorab festgelegt hat, dann die Claims – Aussteller, Audience, Ablauf mit kleiner Toleranz für Uhrenabweichungen und der Token-Typ, damit kein ID-Token akzeptiert wird, wo ein Access Token erwartet wird. RFC 8725 (JWT Best Current Practices) führt diese Regeln auf; die meisten JWT-Schwachstellen entstehen, weil eine davon übersprungen wird.
Die Wahl des Algorithmus ist eine Abwägung, die ES256 vs. RS256 und HS256 vs. RS256 behandeln. Der JWT-Debugger dekodiert und prüft Tokens lokal.