Skip to main content
CheckTown
Validatoren

JWT-Validator: Struktur und Claims von JSON Web Tokens prüfen

Veröffentlicht 6 Min. Lesezeit
In diesem Artikel

Was ist ein JWT?

Ein JWT (JSON Web Token) ist ein kompaktes, URL-sicheres Token-Format, mit dem sich Informationen als JSON-Objekt sicher zwischen Parteien übertragen lassen. In RFC 7519 definiert, sind JWTs der De-facto-Standard für Authentifizierung und Autorisierung in modernen Webanwendungen und APIs.

JWTs sind in sich abgeschlossen — sie tragen alle Informationen in sich, die nötig sind, um die Echtheit des Tokens zu prüfen und Benutzer-Claims auszulesen, ohne eine Datenbank abzufragen. Das macht sie ideal für zustandslose Authentifizierung in verteilten Systemen und Microservice-Architekturen.

Aufbau eines JWT

Ein JWT besteht aus drei Base64URL-kodierten Teilen, die durch Punkte getrennt sind: header.payload.signature.

  • Header — ein JSON-Objekt, das den Token-Typ (JWT) und den Signaturalgorithmus (z. B. HS256, RS256, ES256) angibt
  • Payload — ein JSON-Objekt mit Claims: registrierte Claims (iss, sub, exp, iat), öffentliche Claims und private Claims
  • Signatur — erzeugt, indem der kodierte Header und die Payload mit einem geheimen Schlüssel (HMAC) oder einem privaten Schlüssel (RSA/ECDSA) signiert werden

Kostenlos testen – keine Registrierung erforderlich

JWT prüfen →

So funktioniert die JWT-Prüfung

Die JWT-Prüfung umfasst strukturelle Kontrollen, die Signaturverifizierung und die Prüfung der Claims.

  • Strukturprüfung — das Token muss genau drei Base64URL-kodierte Segmente enthalten, die durch zwei Punkte getrennt sind
  • Header-Prüfung — der Header muss gültige Felder typ und alg enthalten. Der Algorithmus muss mit dem übereinstimmen, den der Server erwartet
  • Signaturverifizierung — die Signatur wird aus Header, Payload und Signaturschlüssel neu berechnet. Stimmt die neu berechnete Signatur überein, wurde das Token nicht manipuliert
  • Claims-Prüfung — die Claims exp (Ablauf), nbf (nicht vor) und iss (Aussteller) werden gegen die aktuelle Zeit und die erwarteten Werte geprüft

Häufige Anwendungsfälle

JWTs treiben Authentifizierung und Autorisierung im gesamten modernen Web-Stack an.

  • API-Authentifizierung — Clients übermitteln JWTs im Authorization-Header (Bearer-Schema), um API-Anfragen ohne Sitzungen zu authentifizieren
  • Single Sign-on (SSO) — Identitätsanbieter stellen JWTs aus, die mehrere Anwendungen akzeptieren, was eine nahtlose anwendungsübergreifende Authentifizierung ermöglicht
  • OAuth-2.0-Access-Tokens — viele OAuth-Implementierungen verwenden JWTs als Access-Tokens und kodieren Scopes und Berechtigungen direkt im Token
  • Microservice-Kommunikation — Dienste geben JWTs weiter, um Benutzerkontext und Autorisierungsentscheidungen über Dienstgrenzen hinweg zu übermitteln

Best Practices für die JWT-Sicherheit

JWTs sind mächtig, erfordern aber einen sorgfältigen Umgang, um verbreitete Sicherheitsfallen zu vermeiden.

  • Prüfen Sie immer den Algorithmus — lassen Sie niemals zu, dass das Feld alg aus dem Token bestimmt, welchen Algorithmus Ihr Server verwendet. Das verhindert den Angriff über den Algorithmus none
  • Setzen Sie kurze Ablaufzeiten — JWTs lassen sich nach der Ausstellung nicht widerrufen. Halten Sie die exp-Zeiten kurz (15 Minuten für Access-Tokens) und nutzen Sie Refresh-Tokens für langlebige Sitzungen
  • Nutzen Sie asymmetrische Algorithmen für verteilte Systeme — RS256 oder ES256 erlauben Diensten, Tokens zu prüfen, ohne das Signaturgeheimnis zu teilen
  • Speichern Sie niemals sensible Daten in der Payload — JWTs sind kodiert, nicht verschlüsselt. Jeder kann die Payload dekodieren. Bewahren Sie Geheimnisse in Ihrer Datenbank auf, nicht im Token

Häufig gestellte Fragen

Lässt sich ein JWT ohne den geheimen Schlüssel dekodieren?

Ja. JWT-Payloads sind Base64URL-kodiert, nicht verschlüsselt. Jeder kann Header und Payload dekodieren und lesen. Der geheime Schlüssel wird nur benötigt, um die Signatur zu prüfen — also zu bestätigen, dass das Token nicht verändert wurde.

Was ist der Unterschied zwischen JWS und JWE?

JWS (JSON Web Signature) ist das, was die meisten unter einem JWT verstehen — ein signiertes Token. JWE (JSON Web Encryption) ist ein verschlüsseltes Token, dessen Payload sich ohne den Entschlüsselungsschlüssel nicht lesen lässt. Die meisten JWTs sind JWS-Tokens.

Sollte ich JWTs in localStorage oder in Cookies speichern?

HttpOnly-Cookies sind sicherer, da sie nicht über JavaScript zugänglich sind (was Diebstahl durch XSS verhindert). localStorage ist anfällig für XSS-Angriffe. Verwenden Sie für sensible Anwendungen HttpOnly-Secure-SameSite-Cookies.

Verwandte Tools