Zum Inhalt springen
Toolbrik
Zurück zum Blog

Was ein JWT ist und wie man es ohne Bibliotheken decodiert

8. September 2026 · Verwandtes Tool: JWT-Decoder

Ein JWT (JSON Web Token) taucht in fast jeder modernen API auf: im Header Authorization: Bearer ..., in Session-Cookies oder in Tokens von Drittanbietern (OAuth, SSO). Und trotzdem hat kaum jemand je hineingeschaut.

Die drei Teile

Ein JWT besteht aus drei Base64URL-Blöcken, getrennt durch Punkte: header.payload.signature.

  1. Header — der Signaturalgorithmus (HS256, RS256 ...) und der Token-Typ.
  2. Payload — die Claims: Daten wie sub (Subjekt), exp (Ablaufzeit), iat (ausgestellt am) und beliebige Custom-Felder des Backends.
  3. Signature — der Hash, der garantiert, dass Header und Payload seit der Signierung nicht verändert wurden.

Füge ihn in den JWT-Decoder ein und du siehst Header und Payload bereits als lesbares JSON geparst, mit dem Ablaufdatum in menschenlesbarer Form statt als rohem Unix-Timestamp.

Decodieren ist nicht Verifizieren

Das ist der häufigste Denkfehler: Jeder kann ein JWT decodieren, weil Header und Payload nur Base64URL-kodiert, nicht verschlüsselt sind. Sie zu öffnen erfordert nicht den geheimen Schlüssel.

Was den Schlüssel (oder bei RS256 den öffentlichen Schlüssel) erfordert, ist die Signaturprüfung — die Bestätigung, dass das Token nicht manipuliert wurde und tatsächlich von dem ausgestellt wurde, der es behauptet. Ein Online-Decoder zeigt dir den Inhalt, aber du solltest niemals einem fremden JWT vertrauen, ohne dass dein Backend zuerst die Signatur prüft.

Warum es abläuft

Der Claim exp ist ein Ablaufdatum in Sekunden seit der Unix-Epoche. Wenn sich deine Sitzung immer wieder "von selbst abmeldet", liegt es fast immer daran: Das Token ist abgelaufen und der Client hat es nicht rechtzeitig erneuert. Vergleiche es mit dem Unix-Timestamp-Umrechner, wenn du die Rechnung von Hand machen musst.

Wann man einem Token misstrauen sollte

  • Wenn das alg im Header none ist — das bedeutet, der Aussteller signiert gar nichts, eine klassische Schwachstelle, falls das Backend das nicht explizit ablehnt.
  • Wenn kein exp vorhanden ist — das Token läuft nie ab, was selten beabsichtigt ist.
  • Wenn die Payload sensible Daten im Klartext enthält (Passwörter, Kartennummern) — ein JWT ist kein verschlüsselter Container, er sollte nichts enthalten, das nicht einsehbar sein darf.

Kurz gesagt: Nutze den Decoder zum Debuggen und Verstehen, aber die echte JWT-Validierung läuft immer über deinen Server.