Tutorial
So dekodierst du ein JWT ohne Leck
Ein JSON Web Token trägt echte Daten: den Nutzer, für den es ausgestellt wurde, die Rechte, die es gewährt, und sein Ablaufdatum. Es in einen beliebigen Online-Decoder einzufügen bedeutet, diese Daten und oft eine noch gültige Sitzung an einen Server zu geben, den du nicht kontrollierst. Der Decoder unten läuft vollständig in deinem Browser. Du kannst also lesen, was in einem Token steckt, prüfen, ob es abgelaufen ist, und eine HMAC-Signatur bestätigen, wenn du das Geheimnis kennst, ganz ohne dass eine einzige Netzwerkanfrage deinen Tab verlässt.
Schritt für Schritt
- Öffne den JWT-Decoder und füge dein Token in das Eingabefeld ein. Ein JWT besteht aus drei Base64Url-Blöcken, die durch Punkte getrennt sind: Header, Payload und Signatur. Du kannst es mit dem Bearer-Präfix oder ohne einfügen; das Werkzeug liest die Struktur in beiden Fällen und meldet sofort, wenn das Format falsch ist.
- Lies den dekodierten Header und die Payload. Der Header zeigt den Signaturalgorithmus (etwa HS256 oder RS256) und die Schlüssel-ID, falls vorhanden. Die Payload listet die Claims auf: für wen das Token bestimmt ist (sub), wer es ausgestellt hat (iss) und die Zeitstempel. Das Werkzeug wandelt die numerischen Felder iat, nbf und exp in lesbare Datumsangaben um und zeigt an, ob das Token noch gültig oder bereits abgelaufen ist.

- Wenn das Token HS256 verwendet und du das gemeinsame Geheimnis besitzt, füge das Geheimnis in das Prüffeld ein und klicke auf Verifizieren. Das Werkzeug berechnet den HMAC über Header und Payload neu und vergleicht ihn mit der Signatur, sodass du erfährst, ob das Token echt ist oder verändert wurde. Bei RS256- oder ES256-Token signiert ein privater Schlüssel, den du nicht hast; das Werkzeug prüft daher die Claims, behauptet aber nicht, die Signatur zu verifizieren.

Warum du ein Token nie auf einer beliebigen Seite einfügst
Ein JWT ist nicht verschlüsselt. Header und Payload sind nur Base64Url-kodiert, das heisst, jeder, der das Token erhält, kann jeden Claim darin lesen: E-Mail, Nutzer-ID, Rollen, interne Flags. Ist das Token ein Zugriffstoken, das noch nicht abgelaufen ist, kann der Inhaber es erneut verwenden und in deinem Namen handeln, bis es abläuft. Wenn du ein aktives Token in einen gehosteten Decoder einfügst, sendest du all das an die Protokolle dieses Servers. Das Token auf deinem eigenen Gerät ohne Upload zu dekodieren ist der einzige Weg, es zu prüfen, ohne den Kreis derer zu erweitern, die es sehen können. Du kannst bestätigen, dass kein Datenverkehr stattfindet, indem du beim Dekodieren das Netzwerkpanel öffnest.
Was die Signatur dir sagen kann und was nicht
Die Signatur verhindert, dass jemand die Claims ändert und damit durchkommt. Bei einem HS256-Token signiert und verifiziert dasselbe Geheimnis, wenn du also das Geheimnis kennst, kannst du die Echtheit des Tokens direkt hier vollständig bestätigen. Bei RS256- und ES256-Token signiert ein privater Schlüssel das Token, und nur der passende öffentliche Schlüssel verifiziert es; der private Schlüssel verlässt den Aussteller nie, daher kann ein clientseitiges Werkzeug die Claims lesen, aber die Signatur ohne diesen öffentlichen Schlüssel nicht ehrlich beweisen. Behandle die dekodierte Payload als Behauptung des Ausstellers, nicht als Beweis, bis die Signatur von demjenigen geprüft wird, der den Prüfschlüssel besitzt. Um Geheimnisse separat zu hashen oder zu vergleichen, läuft der Hash-Generator auf dieser Seite ebenfalls lokal.
JWT-Struktur und was jeder Teil preisgibt
Ein JWT besteht aus drei Base64url-kodierten Segmenten, die durch Punkte getrennt sind: Header, Payload und Signatur. Der Header deklariert den Token-Typ ("JWT") und den Algorithmus: HS256 (HMAC-SHA-256, ein gemeinsamer geheimer Schlüssel) oder RS256 (RSA-SHA-256, ein öffentliches/privates Schlüsselpaar) sind die häufigsten. Der Payload enthält Claims wie `sub` (Subjekt, üblicherweise eine Benutzer-ID), `iat` (ausgestellt-am Unix-Zeitstempel), `exp` (Ablauf-Unix-Zeitstempel), `aud` (beabsichtigtes Publikum) und anwendungsspezifische Claims wie Rollen oder Scopes. Base64url ist keine Verschlüsselung: Es ist eine URL-sichere Variante von Base64, die `+` durch `-` und `/` durch `_` ersetzt und das Auffüllen weglässt. Jeder, der die rohe Token-Zeichenkette besitzt, kann Header und Payload ohne den Signaturschlüssel dekodieren. Nur das Signatursegment erfordert den Schlüssel zur Verifikation. Deshalb ist das Einfügen eines aktiven Produktions-Tokens in einen externen Online-Decoder ein Sicherheitsrisiko: Wenn das `exp` des Tokens noch in der Zukunft liegt und der Dienst die Eingabe protokolliert, kann die repräsentierte Sitzung gefährdet sein.
Die in dieser Anleitung verwendeten Tools
- JWT-DecoderJWT (Header, Payload, Ablaufdatum) decodieren, ohne ihn irgendwohin zu senden. Keine Signaturverifizierung.
- Hash-GeneratorMD5-, SHA-1-, SHA-256-, SHA-512-Hashes aus Text oder Dateien generieren. Kein Upload.
- JSON-FormatiererJSON direkt im Browser formatieren, validieren und minimieren. Kein Upload.
Häufige Fragen
Wird mein Token beim Dekodieren an einen Server gesendet?
Nein. Der Decoder teilt das Token, dekodiert Header und Payload per Base64Url und stellt sie im Speicher dar. Die optionale HMAC-Prüfung nutzt die im Browser eingebaute Web-Crypto-API. Nichts wird über das Netzwerk übertragen, was wichtig ist, weil ein JWT oft persönliche Daten und eine noch aktive Sitzung enthält. Öffne beim Dekodieren das Netzwerkpanel deines Browsers, und du wirst keine Anfrage ausgehen sehen.
Kann dieses Werkzeug eine RS256- oder ES256-Signatur verifizieren?
Nicht vollständig, und es tut nicht so. HS256 nutzt ein einziges gemeinsames Geheimnis zum Signieren und Verifizieren, das Einfügen dieses Geheimnisses lässt das Werkzeug die Signatur im Browser bestätigen. RS256 und ES256 nutzen einen privaten Schlüssel zum Signieren und einen separaten öffentlichen Schlüssel zum Verifizieren; das Werkzeug liest und validiert die Claims und die Gültigkeit, behauptet aber keine Signatur, die es nicht prüfen kann. Verifiziere solche Token bei dem Dienst, der den öffentlichen Schlüssel besitzt.