JWT-Struktur
Ein JSON Web Token besteht aus drei Base64url-Segmenten, die durch Punkte getrennt sind: ein Header, der den Signaturalgorithmus nennt, ein Payload mit Claims dazu, wer Sie sind und bis wann, sowie eine kryptografische Signatur über die ersten beiden. Die in RFC 7519 definierte Struktur kann jeder einsehen – die Signatur schützt die Integrität, nicht die Geheimhaltung.
JWT-Struktur erklärt
Wenn ein Dienst Ihnen einen Login-Nachweis mitgeben will, den jeder seiner Server prüfen kann, ohne dass es einen gemeinsamen Session-Speicher braucht, erhalten Sie einen JWT. Das Token ist eine kompakte, URL-sichere Zeichenkette – Sie haben solche schon gesehen: drei Blöcke scheinbaren Wirrwarrs, getrennt durch zwei Punkte, unterwegs im Authorization-Header oder in einem Cookie. Der Wirrwarr ist keine Verschlüsselung; es ist Base64url und lässt sich mit einer einzigen Codezeile dekodieren.
Das Format stammt aus einer Familie von Spezifikationen: RFC 7519 definiert das Token selbst, RFC 7515 (JWS) definiert, wie die Signatur es umschließt, und die JOSE-Arbeitsgruppe hat die registrierten Claim-Namen und Algorithmus-Kennungen beigesteuert. Diese Herkunft erklärt die am häufigsten missverstandene Eigenschaft des Formats, die unten klar benannt wird – signiert heißt: Manipulationen werden erkannt, nicht: geheim.
Dieser Leitfaden dekodiert ein echtes Token Segment für Segment, listet die registrierten Claims mit ihrer exakten Semantik auf, vergleicht die beiden Signaturfamilien, denen Sie begegnen werden – HS256 und RS256 – und nennt die Regeln, die Token sicher halten, darunter auch, warum die Verifizierung auf den Server gehört: mit dem Schlüssel des Ausstellers, bei jeder Anfrage.
Alles Folgende können Sie mit einem echten Token in Sekunden ausprobieren – der JWT-Decoder teilt und dekodiert alle drei Segmente lokal und markiert unterwegs die Zeitstempel.
Weil jedes Segment Base64url ist, ist der Base64-Leitfaden die passende Ergänzung dazu: Er erklärt das Alphabet, das entfallene Padding und den Grund, warum Token URL-sicher sind.
Drei Segmente, zwei Punkte
Die kompakte Serialisierung ist header.payload.signature – jedes Segment separat Base64url-kodiert, die Punkte als reine Trennzeichen. Die Kodierung ist bewusst ohne Padding, sodass ein Token nur Buchstaben, Ziffern, Binde- und Unterstriche enthält: sicher in URLs, Headern und Cookies, ganz ohne Escaping. Die ersten beiden Segmente zu dekodieren ist kein Hack – es ist der vorgesehene Weg, ein Token zu untersuchen; im dritten Segment findet die Verifizierung statt.
Ein echtes Token, über das eine Signatur gerechnet wurde, dekodiert sich exakt so:
Ein Token mit gültiger HS256-Signatur
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJzdWIiOiJ1c2VyXzg0OTIiLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJpYXQiOjE3NjcyMjU2MDAsImV4cCI6MTc2NzMxMjAwMCwianRpIjoiYjBmNmMyZDQtNGU3YS00YzFmLTlhMmItM2Q1ZTdmOWExYzNlIn0.iDPqw4BRxZtM064Y3EH83XLB0cgEjbj5snSXeM846VY
Die ersten beiden Segmente, dekodiert
{"alg":"HS256","typ":"JWT"}
{"iss":"https://auth.example.com","sub":"user_8492",
"aud":"api.example.com","iat":1767225600,
"exp":1767312000,
"jti":"b0f6c2d4-4e7a-4c1f-9a2b-3d5e7f9a1c3e"}Der Header: das Inhaltsverzeichnis des Tokens
Der Header ist ein kleines JSON-Objekt – formal das JWS Protected Header. Zwei Felder erledigen fast die gesamte Arbeit: alg nennt den Signaturalgorithmus, typ hält den Medientyp fest, üblicherweise JWT. Ein drittes, kid (key ID), zeigt dem Prüfer den richtigen Schlüssel, wenn ein Aussteller mehrere veröffentlicht. Der Header wird signiert, aber nie verschlüsselt, und er wird erst vertraut, nachdem die Signatur verifiziert wurde – bis dahin ist alg eine Behauptung, kein Fakt.
| Feld | Bedeutung | Beispiel |
|---|---|---|
| alg | Signaturalgorithmus – die erste Routing-Entscheidung des Prüfers | HS256, RS256, ES256 |
| typ | Medientyp; konventionsgemäß JWT, von den meisten Bibliotheken ignoriert | JWT |
| kid | Welcher Schlüssel zur Verifizierung dient, wenn mehrere veröffentlicht sind | 2026-01-signing |
| none | Der Pseudo-Algorithmus für „unsigned“ (nicht signiert) – abweisen, außer er wurde ausdrücklich angefordert | (ein bekanntes Angriffsziel) |
Der Payload: registrierte Claims und was jeder verspricht
Der Payload ist ein JSON-Objekt aus Claims. Sieben sind in RFC 7519 mit präziser, interoperabler Bedeutung registriert; alles andere bleibt privat zwischen Aussteller und Zielgruppe. Zeitangaben sind NumericDate-Werte – Sekunden seit der Unix-Epoche, nicht Millisekunden – und die Zeit-Claims sind Hinweise für den Prüfer: Sie zu kontrollieren ist Aufgabe des Prüfers, nicht etwas, was das Format erzwingt.
| Claim | Vollständiger Name | Was er behauptet |
|---|---|---|
| iss | Issuer | Wer das Token erzeugt und signiert hat – eine URL oder ein Name |
| sub | Subject | Wen das Token betrifft – eine Benutzer- oder Client-Kennung |
| aud | Audience | Für welche Empfänger das Token bestimmt ist; Prüfer weisen es zurück, wenn sie nicht aufgeführt sind |
| exp | Expiration | Frist in Sekunden seit der Epoche; nach ihrem Ablauf ungültig |
| nbf | Nicht vor | Frühester Zeitpunkt, zu dem das Token akzeptiert werden darf |
| iat | Ausgestellt am | Wann das Token erstellt wurde – Altersnachweis, kein Ablaufdatum |
| jti | JWT ID | Eindeutige Kennung dieses Tokens – der Anknüpfungspunkt für Sperrlisten |
Die Signatur: HS256, RS256 und wie die Verifizierung funktioniert
Die Signatur wird über die Signierungseingabe gerechnet – den kodierten Header, einen Punkt, den kodierten Payload – und zwar mit dem Algorithmus, den der Header nennt. HS256 ist HMAC-SHA256 mit einem geteilten Geheimnis: schnell und symmetrisch, aber nur passend, wenn Unterzeichner und alle Prüfer eine Vertrauensdomäne bilden, denn jeder, der das Geheimnis besitzt, kann Token ausstellen. RS256 ist RSA: Der Aussteller signiert mit einem privaten Schlüssel, und jeder – auch ein Browser – kann mit dem veröffentlichten öffentlichen Schlüssel verifizieren. Genau das macht RS256 zum Standard für föderierte Protokolle wie OAuth 2.0 und OpenID Connect.
Die Verifizierung rechnet die Signatur neu und vergleicht. Das ist der gesamte Mechanismus – und deshalb entscheidet allein der alg-Header, wie die Prüfung abläuft. Bibliotheken haben sich nach den Algorithmus-Verwechslungsangriffen der frühen 2010er Jahre gehärtet: Ein Token, das alg none behauptet, oder ein RS256-Token, das als HS256 wiedergegeben wird und den öffentlichen Schlüssel als HMAC-Geheimnis benutzt, verifiziert nur noch bei Prüfern, die ihren erwarteten Algorithmus nicht festschreiben.
Die beiden Familien auf einen Blick
HS256: HMAC-SHA256(secret, header + '.' + payload)
Signierer und Prüfer teilen das Secret
RS256: RSA-SHA256(private key, header + '.' + payload)
der Aussteller signiert; jeder prüft mit dem öffentlichen SchlüsselDie daraus folgende Regel
Legen Sie den erwarteten Algorithmus pro Aussteller fest. Leiten Sie ihn nie allein aus dem Header des Tokens ab. Akzeptieren Sie niemals alg: none.
Signiert, nicht versiegelt: was die Signatur nicht leistet
Die Signatur beweist, dass das Token von demjenigen ausgestellt wurde, der den Schlüssel besitzt, und seitdem nicht verändert wurde – Integrität und Authentizität. Vertraulichkeit bietet sie null: Base64url ist eine Kodierung, und der Payload ist für jeden lesbar, der das Token zu sehen bekommt – auch für Browser-Erweiterungen, für Proxies, wenn Token in URLs unterwegs sind, und für Log-Sammler. Daraus ergeben sich die dauerhaften Regeln: Niemals Geheimnisse in einen JWT-Payload, niemals Token in URLs und jede dekodierte Claim als Daten behandeln, nicht als Entscheidung.
Der letzte Punkt ist die Falle auf der Client-Seite. Ein Browser kann ein Token dekodieren und exp oder sub lesen – aber er kann das Token nicht wirklich verifizieren, denn er besitzt den Schlüssel des Ausstellers nicht: Bei HS256 darf das Geheimnis den Browser überhaupt nie erreichen, und bei RS256 beweist eine clientseitige Prüfung nichts darüber, was der Inhaber aufrufen darf. Clients dürfen Token für die Darstellung untersuchen – einen Namen anzeigen, vor Ablauf warnen –, aber der Server muss die Signatur und jede Claim bei jeder Anfrage verifizieren. Untersuchung ist keine Verifizierung, und lesbar ist nicht autorisiert.
Token sicher untersuchen – der praktische Ablauf
Ein disziplinierter Prüfzyklus dauert Sekunden: Header und Payload dekodieren, exp und nbf mit der Uhr abgleichen, bestätigen, dass iss und aud den Erwartungen entsprechen – und erst dann, auf dem Server, die Signatur mit einem festgeschriebenen Algorithmus und dem richtigen Schlüssel verifizieren. Alles außer der letzten Verifizierung ist reine Textverarbeitung; deshalb ist ein Decoder, der vollständig in Ihrem Browser läuft, das richtige Werkzeug: Echte Token sind Bearer-Zugangsdaten, und Zugangsdaten gehören in Tabs, die Sie kontrollieren – nicht auf Websites, die sie weiterleiten könnten.
Bedenken Sie, was die Struktur nicht leisten kann: Widerruf – jti-basierte Sperrlisten müssen serverseitig aufgebaut und geprüft werden; Vertraulichkeit – brauchen Sie verschlüsselte Token, verwenden Sie JWE; und Vertrauen – ein strukturell perfektes Token von einem Aussteller, den Sie nie konfiguriert haben, ist wertlos. Die Struktur sagt Ihnen, was versprochen wurde; nur die Verifizierung sagt Ihnen, dass das Versprechen intakt ist.
Häufig gestellte Fragen
Ist es sicher, mein echtes Token in einen JWT-Decoder einzufügen?
Hier ja, denn der Decoder auf dieser Website läuft vollständig in Ihrem Browser: Das Token wird nie hochgeladen, kein Server könnte es protokollieren, und die Content-Security-Policy der Website blockiert ausgehende Anfragen, sodass die Seite nicht einmal aus Versehen etwas übertragen kann. Gehen Sie mit beliebigen Online-Decodern deutlich vorsichtiger um – ein JWT ist eine Bearer-Berechtigung, und jeder, der sie liest, kann sie nutzen, bis sie abläuft.
Verschlüsselt die Signatur den Inhalt des Tokens?
Nein – die Signatur erkennt nur Manipulationen. Base64url ist eine reversible Kodierung, keine Verschlüsselung: Jeder, der das Token besitzt, kann jede Claim lesen; deshalb dürfen Passwörter und Geheimnisse nie in den Payload. Vertrauliche Varianten existieren als JWEs – verschlüsselte JSON Web Tokens –, aber die Token in gewöhnlichen Authorization-Headern sind JWSs: signiert, lesbar, manipulationserkennend.
Was ist der Unterschied zwischen HS256 und RS256?
Das Schlüsselmodell. HS256 ist HMAC-SHA256 mit einem geteilten Geheimnis: Jede Partei, die Token verifizieren kann, kann sie auch ausstellen; es eignet sich daher für einzelne Dienste, die beide Enden kontrollieren. RS256 ist RSA: Der Aussteller signiert mit einem privaten Schlüssel, die Prüfer kontrollieren mit einem öffentlichen – die Verifizierung verleiht niemals die Macht zur Fälschung. Föderierte Identitäts-Standards bauen aus genau diesem Grund auf RS256 auf.
Warum müssen JWTs auf dem Server verifiziert werden?
Weil die Verifizierung den Schlüssel des Ausstellers und eine Autorisierungsentscheidung braucht – und nur der Server hat beides. Bei HS256 darf das geteilte Geheimnis einen Browser überhaupt nie erreichen; bei RS256 könnte ein Browser eine Signatur kryptografisch prüfen, aber sein eigenes Ergebnis beweist nichts über Zugriffsrechte – Clients lassen sich verändern. Der Server verifiziert die Signatur erneut und prüft iss, aud und exp bei jeder Anfrage.
Was passiert, wenn ein JWT abläuft?
Nichts Automatisches – exp ist eine Claim, die ein Prüfer kontrollieren muss. Ein regelkonformer Server vergleicht sie mit der aktuellen Zeit und weist das Token zurück, sobald sie überschritten ist; ein nachlässiger akzeptiert es für immer weiter. Aus diesem Grund existieren Refresh-Flows: kurzlebige Access-Tokens, die bei jeder Anfrage geprüft werden, plus ein langlebigeres Refresh-Token, das der Server bei Bedarf widerrufen kann.
Kann ich einem Token vertrauen, dessen Signatur ich nicht verifiziert habe?
Nur als nicht authentifizierten Hinweis. Ein unverifiziertes Token kann von jedem stammen – seine iss-, sub- und sogar exp-Angaben sind bloß Text, bis die Signaturprüfung besteht. Das sichere Denkmodell: Das Dekodieren sagt Ihnen, was das Token behauptet; die Verifizierung sagt Ihnen, wer diese Claims signiert hat und dass sie unverändert sind. Vergeben Sie Zugriff nie auf Basis der ersten Aussage.
Wo kann ich die hier zitierten Standards nachlesen?
Welche verwandten Tools sollten Sie als Nächstes nutzen?
- JWT dekodierenJSON Web Token dekodieren und jeden Claim verstehenÖffnen
- Wie funktioniert Base64Leitfaden in verständlicher SpracheÖffnen
- UUID-VersionenLeitfaden in verständlicher SpracheÖffnen
- Was ist JSONLeitfaden in verständlicher SpracheÖffnen
- JSON formatierenEinrückung und Sortierung einstellen, Kommentare entfernenÖffnen
- JSON validierenSyntax prüfen mit exakter Zeile und Spalte, per Klick reparierenÖffnen