JWT erklärt: Struktur, Sicherheit und Best Practices
Was ist JWT?
JSON Web Tokens (JWTs) sind eine standardisierte Methode zur sicheren Übertragung von Daten zwischen zwei Parteien. Sie enthalten Informationen (Claims), die im JSON-Format kodiert sind. Diese Claims helfen dabei, bestimmte Details zwischen den beteiligten Parteien auszutauschen.
Im Kern ist ein JWT ein Mechanismus zur Überprüfung der Authentizität bestimmter JSON-Daten. Dies ist möglich, weil jeder JWT kryptografisch signiert ist, um zu garantieren, dass sein Inhalt während der Übertragung oder Speicherung nicht manipuliert wurde.
Es ist wichtig zu beachten, dass ein JWT den Datenbesitz garantiert, aber keine Verschlüsselung bietet. Der Grund dafür ist, dass der JWT von jedem eingesehen werden kann, der den Token abfängt, weil er serialisiert, aber nicht verschlüsselt ist.
Es wird dringend empfohlen, JWTs mit HTTPS zu verwenden, eine Praxis, die sich auf die allgemeine Websicherheit erstreckt. HTTPS schützt nicht nur die Vertraulichkeit des JWT-Inhalts bei der Übertragung, sondern bietet auch eine breitere Schutzschicht für Daten im Transit.
Ein JWT ist nur ein String, der so aussieht:xxxxx.yyyyy.zzzzz
Er besteht aus 3 Teilen:
Header - gibt den Token-Typ (JWT) und den verwendeten Algorithmus an (z.B. HS256).
Payload - enthält die eigentlichen Daten (wie Benutzer-ID, Rolle oder Berechtigungen).
Signature - stellt sicher, dass der Token nicht von jemandem geändert wurde.
Wie funktioniert JWT?
Wie JWT-Authentifizierung funktioniert
1. Benutzer meldet sich an
Ein Benutzer gibt Benutzername und Passwort ein.
Der Server überprüft die Anmeldedaten.
Bei Richtigkeit erstellt der Server einen JWT, der Benutzerinformationen enthält (z.B.
userId: 123, role: "admin") und signiert ihn mit einem geheimen Schlüssel.
2. Token wird an den Client gesendet
Der JWT wird zurück an den Client gesendet (normalerweise in einer Anmeldeantwort).
Der Client speichert ihn sicher (localStorage, sessionStorage oder Cookies).
3. Client sendet JWT mit Anfragen
Bei jeder Anfrage an eine geschützte API sendet der Client den JWT im Authorization-Header so:
Authorization: Bearer <JWT>
Server verifiziert JWT
Der Server empfängt den Token.
Er prüft die Signatur mit dem geheimen Schlüssel:
Bei Gültigkeit vertraut er den enthaltenen Daten (wie der Benutzerrolle).
Bei Ungültigkeit wird die Anfrage abgelehnt (401 Unauthorized).
5. Zugriff gewährt oder verweigert
Wenn der Token gültig ist und der Benutzer die richtigen Berechtigungen hat, erlaubt der Server den Zugriff.
Andernfalls verweigert der Server den Zugriff.
Beispiel:
Benutzer meldet sich an und erhält JWT:
{ "userId": 123, "role": "admin" }Benutzer ruft
/admin/dashboardmit dem Token auf.Server prüft role = "admin".
Zugriff gewährt.
JWT in Microservices-, Serverless- und verteilten Architekturen
In modernen verteilten oder Serverless-Systemen glänzen JWTs, weil sie gemeinsamen Sitzungsstatus eliminieren. Sie können einen Token einmal ausstellen und ihn dienstübergreifend validieren, ohne zentralen Sitzungsspeicher.
Best Practices in verteilten Kontexten:
Verwenden Sie asymmetrische Signierung (RS256 / ES256), damit Microservices ohne gemeinsamen symmetrischen Schlüssel validieren können.
Fügen Sie audience (
aud), issuer (iss), jti (JWT ID) undnbf(not before)-Claims hinzu, um Replay-Angriffe und Missbrauch zu verhindern.Kombinieren Sie kurzlebige Access Tokens und Refresh-Token-Rotation, um die Exposition zu begrenzen.
Dieser Abschnitt hilft Lesern, die reale Skalierbarkeit und Sicherheit von JWT in verteilten Systemen zu verstehen.
Hinweise zur Token-Aktualisierung und -Widerrufung finden Sie in unserer API-Sicherheits-Checkliste
Struktur von JWT
Die Struktur eines JWT (JSON Web Token) besteht aus drei Hauptteilen, die durch Punkte (.) getrennt sind:
Header
Enthält Metadaten über den Token, wie den Token-Typ (
JWT) und den verwendeten Signierungsalgorithmus (z.B.HS256,RS256).Beispiel:
Payload
Enthält die eigentlichen Daten (als Claims bezeichnet), die der Token trägt.
Claims können sich auf den Benutzer beziehen (wie
user_id,role) oder auf Token-Metadaten (wie die Ablaufzeit).Beispiel:
Signature
Wird erstellt, indem der kodierte Header und die kodierte Payload genommen und mit dem geheimen Schlüssel und dem angegebenen Algorithmus verarbeitet werden.
Stellt sicher, dass der Token nicht manipuliert wurde.
Formel:
Das endgültige JWT sieht so aus:
xxxxx- Kodierter Headeryyyyy- Kodierte Payloadzzzzz- Signature
JWT-Beispiel Schritt für Schritt:
Header (vor der Kodierung)
Nach Base64Url-Kodierung - Sie können mit Base64-Kodierung mit unserem Base64-Encoder experimentieren oder vorhandene Tokens mit dem Base64-Decoder dekodieren.
Payload (vor der Kodierung)
Nach Base64Url-Kodierung -
Signature
Wir kombinieren:
Base64UrlEncode(Header) + "." + Base64UrlEncode(Payload)
Dann hashen wir es mit HMACSHA256 und einem geheimen Schlüssel (z.B. mysecretkey).
Beispielergebnis:
Das endgültige JWT sieht so aus:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImV4cCI6MTcxNjAwMDAwMH0.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
{Die ersten beiden Teile können zurück zu JSON dekodiert werden (Header und Payload), aber die Signatur kann nur mit dem geheimen Schlüssel verifiziert werden. So stellt JWT Integrität und Vertrauen sicher.}
Häufige Angriffsszenarien und deren Abschwächung
Hier sind häufige JWT-Angriffsvektoren und umsetzbare Abhilfemaßnahmen:
Angriff / Risiko | Beschreibung | Abhilfemaßnahme |
|---|---|---|
Token-Diebstahl (XSS / localStorage-Zugriff) | Angreifer stehlen JWT, das in clientseitigem JavaScript gespeichert ist. | Verwenden Sie HTTP-only Cookies, setzen Sie SameSite-Flags und bevorzugen Sie Secure-Cookies. |
Algorithmus-Manipulation ("none"-Angriff) | Ein Angreifer erzwingt | Tokens mit |
Schlüsselverwirrung / Schlüsselinjektion | Verwendung schwacher oder nicht übereinstimmender Signierungsschlüssel. | Starke kryptografische Schlüssel verwenden, diese regelmäßig rotieren und die |
Replay-Angriffe | Tokens werden abgefangen und böswillig wiederverwendet. | Eine eindeutige |
Refresh Tokens, Rotation und Widerrufungsstrategien
JWTs unterstützen von sich aus keine Widerrufung, was Token-Erneuerung und -Ungültigmachung kritisch macht. Hier sind Strategien zur Implementierung sicherer Token-Refresh- und Widerrufungsworkflows:
Refresh-Token-Rotation: Stellen Sie pro Anfrage einen neuen Refresh-Token aus und machen Sie den vorherigen ungültig, um Replay-Risiken zu reduzieren.
Kurzlebige Access Tokens: Verwenden Sie kurze Ablaufzeiten (z.B. 5 bis 15 Minuten) und erfordern Sie für fortgesetzten Zugriff eine Aktualisierung.
Blockliste / Token-Speicher: Pflegen Sie einen leichtgewichtigen Speicher widerrufener
jti-Identifier, um kompromittierte Tokens abzulehnen.Toleranzfenster und Wiederverwendungserkennung: Erlauben Sie ein enges Überlappungsfenster für die Aktualisierung, blockieren Sie aber die Wiederverwendung alter Refresh-Tokens.
Dies gibt Entwicklern einen klaren Leitfaden für das sichere Token-Lebenszyklusmanagement.
Beispiel: JWT in Python / Go / Java erstellen und validieren
Vorteile von JWT
Die wichtigsten Vorteile der Verwendung von JWT (JSON Web Token):
Zustandslose Authentifizierung
JWTs erfordern keine Speicherung von Sitzungsdaten auf dem Server.
Der Server verifiziert nur den Token, was ihn skalierbar und effizient macht.
Kompakt und schnell
JWTs sind klein (im JSON-Format), sodass sie leicht in Headern, URLs oder Cookies gesendet werden können.
Das macht die Übertragung zwischen Client und Server schnell.
Sicher (bei korrekter Verwendung)
JWTs werden mit Algorithmen wie HMAC oder RSA signiert, was die Datenintegrität sicherstellt.
Sie können nicht manipuliert werden, es sei denn, der geheime bzw. private Schlüssel ist bekannt.
Domänen- und plattformübergreifende Unterstützung
JWTs funktionieren gut in verteilten Systemen, Microservices und APIs.
Sie können in mobilen Apps, Web-Apps und verschiedenen Domains verwendet werden.
Eigenständig (Self-Contained)
JWTs tragen alle notwendigen Benutzerinformationen (Claims) im Token.
Dies reduziert wiederholte Datenbankabfragen für die Authentifizierung.
Flexibilität
JWTs können benutzerdefinierte Daten speichern (Rollen, Berechtigungen, Ablaufzeit).
Nützlich für Zugangskontrolle und feingranulare Sicherheit.
Weit verbreitet
JWT ist ein Standard (RFC 7519), der von vielen Bibliotheken, Frameworks und Sprachen unterstützt wird.
Kurz gesagt: JWTs machen die Authentifizierung einfacher, schneller und skalierbarer für moderne Web- und Mobile-Anwendungen.
Fazit
Der Aufbau und die Pflege eines geeigneten API-Inventars und die Verwendung sicherer Authentifizierungsmethoden wie JWT sind für moderne Organisationen nicht mehr optional, sondern unverzichtbar. Ein aktuelles API-Inventar gibt Unternehmen Transparenz, verbessert die Compliance und stärkt die Sicherheit, indem sichergestellt wird, dass keine API unbemerkt bleibt. Gleichzeitig bietet JWT eine skalierbare und sichere Methode zur Handhabung der Authentifizierung, die Anwendungen schneller und einfacher verwaltbar macht.
Durch die Kombination eines starken API-Managements mit zuverlässiger Authentifizierung können Organisationen ihre digitalen Assets schützen, Risiken reduzieren und die Effizienz verbessern. Bei Qodex.ai glauben wir, dass Sicherheit und Einfachheit Hand in Hand gehen sollten, damit Unternehmen innovieren können, ohne die Sicherheit zu gefährden.
Häufig gestellte Fragen
Was ist ein JSON Web Token (JWT) und wofür wird es verwendet?
Ein JSON Web Token, kurz JWT, ist ein kompakter, digital signierter Token, der zur sicheren Übertragung von Informationen zwischen zwei Parteien verwendet wird. Er wird häufig für Authentifizierung und Autorisierung in Webanwendungen eingesetzt, weil er es Servern ermöglicht, die Benutzeridentität zu verifizieren, ohne Sitzungsdaten zu speichern. JWTs enthalten kodierte Claims, wie Benutzerrollen oder Berechtigungen, was Systemen hilft, Zugriffsanfragen effizient zu validieren und dabei zustandslose Kommunikation aufrechtzuerhalten.
Wie funktioniert JWT-Authentifizierung in modernen Anwendungen?
JWT-Authentifizierung funktioniert, indem nach einer erfolgreichen Anmeldung ein Token ausgestellt wird. Der Server kodiert wichtige Benutzerdaten und signiert sie mit einem geheimen Schlüssel, bevor er sie an den Client sendet. Bei jeder Anfrage des Clients wird der Token mitgesendet, sodass der Server dessen Authentizität verifizieren kann. Dieser zustandslose Prozess reduziert Datenbankabfragen, verbessert die Skalierbarkeit und vereinfacht die sichere Kommunikation zwischen Microservices und APIs.
Was sind die Hauptkomponenten eines JWT?
Ein JSON Web Token besteht aus drei Teilen: Header, Payload und Signature, die durch Punkte getrennt sind. Der Header definiert den verwendeten Algorithmus, die Payload enthält Benutzerdaten oder Claims, und die Signature stellt die Integrität des Tokens mit einem kryptografischen Hash sicher. Zusammen machen diese Komponenten JWTs sowohl leichtgewichtig als auch manipulationssicher, ideal für sichere, hochperformante Authentifizierung in verteilten Systemen.
Ist es sicher, JWTs in localStorage oder Cookies zu speichern?
Das Speichern von JWTs in localStorage oder Cookies hängt von Ihrem Sicherheitsmodell ab. Während localStorage die Token-Verwaltung vereinfacht, setzt es Tokens XSS-Angriffen aus, wenn Ihre Website nicht ordnungsgemäß bereinigt ist. Sichere, HTTP-only Cookies sind generell sicherer, da sie clientseitigen Zugriff verhindern. Für sensible Anwendungen verbessert die Kombination von Cookies mit kurzen Token-Laufzeiten und Refresh Tokens die JWT-Sicherheit, ohne die Benutzererfahrung zu beeinträchtigen.
Wie unterscheiden sich JWTs von OAuth-Tokens?
JWTs und OAuth-Tokens arbeiten oft zusammen, erfüllen aber unterschiedliche Rollen. OAuth ist ein Autorisierungsframework, das definiert, wie Clients Tokens erhalten, während JWTs ein Token-Format sind, das in diesem Prozess verwendet wird. Im Wesentlichen liefert OAuth die Regeln und JWT die Struktur. JWT-basierte OAuth-Implementierungen werden für moderne APIs bevorzugt, weil sie den Overhead reduzieren und nahtlose, zustandslose Authentifizierung unterstützen.
Was sind Best Practices zur Sicherung von JSON Web Tokens?
Um JWTs effektiv zu sichern, verwenden Sie immer starke geheime Schlüssel oder asymmetrische Verschlüsselung, validieren Sie Signaturen bei jeder Anfrage und setzen Sie kurze Ablaufzeiten. Vermeiden Sie es, sensible Daten in Payloads zu speichern, da JWTs nur base64-kodiert, nicht verschlüsselt sind. Implementieren Sie Token-Widerrufsmechanismen und HTTPS, um Abfangen zu verhindern. Die Befolgung dieser Praktiken stellt sicher, dass JWT-basierte Authentifizierung sowohl skalierbar als auch konform mit modernen API-Sicherheitsstandards bleibt.
Discover, Test, & Secure your APIs 10x Faster than before
Auto-discover every endpoint, generate functional & security tests (OWASP Top 10), auto-heal as code changes, and run in CI/CD - no code needed.
Related Blogs





