JSON-Formatierer
JSON formatieren, prüfen und minifizieren, mit genauer Fehlerstelle.
Entwicklung
Header, Payload und Claims lesen, ohne den Token zu senden.
Ein Zugriffstoken ist ein Anmeldeausweis. Wer ihn hat, kann bis zum Ablauf handeln wie der Nutzer, dem er gehört.
Die bekanntesten JWT-Werkzeuge im Netz senden den Token an einen Server — teils zur Signaturprüfung, teils weil das Formular schlicht abgeschickt wird. Damit liegt ein gültiger Ausweis bei einem Dritten, und wer ihn dort protokolliert, hat einen funktionierenden Zugang.
Dieses Werkzeug dekodiert ausschließlich lokal. Überprüfen lässt sich das im Netzwerk-Tab der Entwicklerwerkzeuge: Beim Einfügen erscheint keine Anfrage. Ist ein Token dennoch einmal irgendwo eingefügt worden, sollte er als kompromittiert gelten und zurückgezogen werden.
Header und Payload sind JSON, nur Base64-kodiert. Die Signatur ist das einzige, was Sicherheit schafft.
| Teil | Inhalt | Lesbar für jeden? |
|---|---|---|
| Header | Verfahren (alg) und Typ (typ) | Ja |
| Payload | Claims: sub, exp, iat, iss, aud, eigene Felder | Ja |
| Signatur | HMAC oder Signatur über die ersten beiden Teile | Nur prüfbar, nicht lesbar |
Die üblichen Claims: sub die Kennung des Subjekts, exp der Ablaufzeitpunkt als Unix-Zeit, iat der Ausstellungszeitpunkt, iss der Aussteller, aud das Zielpublikum. Weil Payload-Inhalte offen lesbar sind, gehören personenbezogene Daten nur hinein, wenn sie ohnehin unproblematisch sind — und schon gar keine Passwörter.
Ein dekodierter Token sagt nur, was jemand behauptet. Ob die Behauptung stimmt, entscheidet allein die Signatur.
Zum Prüfen braucht es den Schlüssel: bei HMAC-Verfahren das gemeinsame Geheimnis, bei RSA oder ECDSA den öffentlichen Schlüssel des Ausstellers. Beides gehört auf den Server, nicht in ein Browser-Werkzeug — deshalb prüft dieses hier nicht.
Historisch gab es dazu eine berüchtigte Schwachstelle: Bibliotheken, die dem Feld alg im Header vertrauten, ließen sich mit alg: none überreden, jede Signatur zu akzeptieren. Aktuelle Bibliotheken verlangen deshalb, dass die Serverseite das erwartete Verfahren vorgibt, statt es dem Token zu entnehmen.
Nein. Header und Payload sind nur Base64-kodiert und für jeden lesbar. Die Signatur schützt vor Änderung, nicht vor Einsicht.
Nein. Das Dekodieren läuft in diesem Tab, überprüfbar im Netzwerk-Tab.
Nein, dafür wäre der Schlüssel nötig. Der gehört auf den Server, nicht in ein Browser-Werkzeug.
Den Ablaufzeitpunkt als Unix-Zeit in Sekunden. Das Werkzeug rechnet ihn in Datum und Uhrzeit um.
Nur solche, die offen liegen dürfen. Der Payload ist für jeden lesbar, der den Token besitzt.
Eine alte Schwachstelle, bei der Bibliotheken dem Verfahren im Header vertrauten und dadurch jede Signatur akzeptierten.