Kostenloser JWT-Decoder

JSON Web Tokens dekodieren und überprüfen · header, payload, Claims und Ablauf.

Header


      

Payload


      

Signatur


      

Über JWTs

JSON Web Tokens (JWTs) sind eine kompakte Methode, um Claims zwischen zwei Parteien darzustellen. Sie bestehen aus drei Teilen: einem header (Algorithmus und Typ), einem payload (Claims wie Aussteller, Ablauf, Subject) und einer signature. Dieses Tool dekodiert header und payload, überprüft aber keine Signaturen · dafür benötigen Sie das Signaturgeheimnis oder den öffentlichen Schlüssel. Die gesamte Dekodierung erfolgt in Ihrem Browser; Ihr Token wird niemals irgendwohin gesendet.

Eine kurze Geschichte der JSON Web Tokens

Der JSON Web Token (JWT) wurde im Mai 2015 als RFC 7519 von Michael B. Jones (Microsoft), John Bradley (Ping Identity) und Nat Sakimura (NRI) unter der IETF-JOSE Working Group standardisiert. Es war der Höhepunkt eines halben Jahrzehnts Arbeit: Der erste JWT-Internet-Draft erschien im Dezember 2010 und entstand aus dem schwergewichtigen XML-basierten Assertion-Format von SAML 2.0 (2005) und dem gefühlten Bedarf nach etwas Leichterem, das Browser nativ parsen konnten. Der Durchbruch war die Wahl von JSON statt XML und base64url statt PEM: Ein JWT passte in eine URL-Query-String oder einen Authorization: Bearer-Header. Die gesamte JOSE-Familie wurde als koordinierter Satz ausgeliefert: RFC 7515 (JWS) zum Signieren, RFC 7516 (JWE) zum Verschlüsseln, RFC 7517 (JWK) für das Schlüsselformat, RFC 7518 (JWA) für Algorithmus-Kennungen und RFC 7519 (JWT) für die Claims-Schicht, alle am selben Tag im Mai 2015. Die Annahme war sofort. OAuth 2.0 (RFC 6749, 2012) hatte Access-Tokens standardisiert, aber ihr Format offen gelassen; die Industrie wählte JWT. OpenID Connect (Dezember 2014, OpenID Foundation) machte JWT für ID-Tokens verpflichtend. Bis 2017 stellte jeder große Identitätsanbieter (Auth0, Okta, Azure AD, AWS Cognito, Google Identity, Firebase Auth) JWTs als sein natives Session-Format aus. JWT.io, die Decoder-Website, die Auth0 2014 startete, wurde zum De-facto-Tool für JWT-Debugging und half, die Entwickler-Aufmerksamkeit für das Format zu zementieren. Zwei Sicherheitsvorfälle prägten das moderne Bedrohungsmodell: Tim McLeans Offenlegung von 2015 des alg: none-Bypasses und des HS/RS-Algorithmus-Verwechslungsangriffs sowie CVE-2022-21449 (April 2022), der von Neil Madden gefundene «Psychic Signatures»-Bug im ECDSA-Verifier von Java 15-18. Beide führten zur Standard-Härtung von Bibliotheken: Die meisten modernen Bibliotheken lehnen jetzt alg: none rundheraus ab und fixieren den erwarteten Algorithmus, statt ihn aus dem Token-Header zu lesen.

Die Anatomie eines JWT

Wo JWTs in der Praxis verwendet werden

Standards und Sicherheits-Meilensteine

Weitere häufig gestellte Fragen

Warum verifiziert dieses Tool die Signatur nicht?

Die Verifizierung benötigt ein Geheimnis (HMAC) oder einen öffentlichen Schlüssel (RSA / ECDSA / EdDSA). Ein produktives HMAC-Geheimnis in eine Website einzufügen, ist an sich ein Credential-Leak, selbst auf einem Tool, das schwört, nichts zu übertragen. Verifizierung gehört auf einen Server, den du kontrollierst. Die Aufgabe des Decoders ist es, den Inhalt lesbar zu machen, damit du sehen kannst, was dein Verifier überprüfen sollte.

Ist es sicher, echte Produktionstokens hier einzufügen?

Die Dekodierung geschieht vollständig in deinem Browser. Das Token wird nicht über das Netzwerk gesendet, in keinem Log gespeichert und nirgendwo abgelegt. Dennoch ist ein JWT oft ein Credential: Wer einen nicht abgelaufenen Access-Token besitzt, kann als der Benutzer agieren. Die Community-Konvention lautet «behandle ein Produktions-JWT wie ein Session-Cookie»: bevorzuge nach Möglichkeit Test-Tokens und rotiere jedes echte Token, das du irgendwo außerhalb der Browser-Session geteilt hast, die es ausgestellt hat.

Wo sollte ich ein JWT im Browser speichern?

Die zwei üblichen Muster haben jeweils einen Tradeoff. localStorage ist bequem, aber von jedem erfolgreichen XSS-Angriff auf der Seite lesbar. Cookies mit HttpOnly sind für JavaScript unsichtbar, sodass XSS sie nicht lesen kann, aber sie brauchen SameSite=Strict oder SameSite=Lax, um CSRF zu vermeiden. Die aktuelle Best Practice: kurzlebige Access-Tokens in einer JavaScript-Variable (nur Speicher) plus ein langlebiges Refresh-Token in einem HttpOnly + Secure + SameSite=Strict-Cookie mit Scope auf den Refresh-Endpunkt, bei jeder Nutzung rotiert.

Was bewirkt das kid-Feld im Header?

Es identifiziert, welcher Schlüssel das Token signiert hat. Moderne Identitätsanbieter veröffentlichen ihre öffentlichen Schlüssel an einem /.well-known/jwks.json-Endpunkt als JWK Set (RFC 7517); der Verifier sucht den Schlüssel, dessen kid mit dem Token-Header übereinstimmt. Das ist es, was eine ausfallzeitfreie Schlüsselrotation ermöglicht: Sowohl alte als auch neue Schlüssel können während der Karenzzeit im JWKS koexistieren.

Kann ich ein JWT widerrufen, nachdem es ausgestellt wurde?

Nicht nativ. Ein signiertes JWT ist bis zu seinem exp-Claim gültig; diese Zustandslosigkeit ist die Schlagzeile-Eigenschaft des Formats. Workarounds: Access-Tokens kurz halten (5-15 Minuten) gekoppelt mit einem widerrufbaren Refresh-Token; eine serverseitige Sperrliste widerrufener jti-Werte führen; den Signaturschlüssel rotieren (was jedes ausstehende, damit signierte Token ungültig macht). Jede Option führt etwas Zustand wieder ein; das ist der Tradeoff.

Ist das Dekodieren eines Tokens dasselbe wie das Entschlüsseln?

Nein. Dekodieren kehrt base64url zurück zu JSON: Jeder kann das, und das ist der Punkt. Entschlüsseln erfordert einen Schlüssel und gilt nur für JSON Web Encryption (JWE, RFC 7516), die verschlüsselte Variante der JOSE-Familie. Die meisten Tokens, die man in der Praxis sieht, sind JWS (signiert, aber nicht verschlüsselt), daher reicht das Dekodieren aus, um sie zu lesen.

Verwandte Werkzeuge