Was ist ein JWT? Eine vollständige Erklärung von JSON Web Tokens
Schnelle Antwort
Ein JWT ist eine Zeichenfolge mit drei durch Punkte getrennten Base64URL-codierten Teilen: header.payload.signature. Der Header gibt den Algorithmus an, die Nutzlast enthält Ansprüche (Benutzer-ID, Rollen, Ablauf) und die Signatur beweist die Authentizität. JWTs werden zur zustandslosen Authentifizierung verwendet. Verwenden Sie unseren kostenlosen JWT Decoder, um Token-Inhalte in Ihrem Browser zu überprüfen.
Einführung
Ein JWT (JSON Web Token) ist ein kompaktes, URL-sicheres Tokenformat, das durch RFC 7519 für die sichere Übertragung von Informationen zwischen Parteien als JSON-Objekt definiert ist. JWTs werden häufig zur Authentifizierung und Autorisierung in Webanwendungen verwendet: Nachdem sich ein Benutzer angemeldet hat, gibt der Server ein JWT aus, das der Client in nachfolgende Anfragen zum Nachweis der Identität einfügt. JWTs sind zustandslos – der Server muss das Token nicht in einer Datenbank nachschlagen; Der Token selbst enthält die Ansprüche des Benutzers und eine Signatur, die beweist, dass er nicht manipuliert wurde.
Schritt für Schritt
-
Verstehen Sie die dreiteilige Struktur
Ein JWT besteht aus drei Teilen: Header (Algorithmus und Typ), Payload (Ansprüche) und Signatur (beweist die Integrität). Jeder Teil ist Base64URL-codiert und durch Punkte getrennt: eyJhbGciOi...J9.eyJzdWIi...J9.signature. Die ersten beiden Teile sind für jeden mit dem Token lesbar; Lediglich die Signatur erfordert den geheimen Schlüssel.
-
Lernen Sie die Standardansprüche kennen
Die Nutzlast enthält Behauptungen – Aussagen zum Thema. Standardansprüche: „sub“ (Subjekt-/Benutzer-ID), „iat“ (ausgestellt zum Zeitstempel), „exp“ (Ablauf), „nbf“ (nicht vorher), „iss“ (Aussteller), „aud“ (Zielgruppe). Benutzerdefinierte Ansprüche können Rollen, Berechtigungen oder andere Daten umfassen.
-
Signierungsalgorithmen verstehen
JWTs verwenden symmetrische (HS256 – gemeinsames Geheimnis) oder asymmetrische (RS256, ES256 – öffentliches/privates Schlüsselpaar) Signierung. Die Signatur verhindert Manipulationen: Durch die Änderung eines beliebigen Teils des Tokens wird die Signatur ungültig. Nur der Inhaber des geheimen/privaten Schlüssels kann gültige Token erstellen.
-
Verwenden Sie JWTs zur Authentifizierung
Nach der Anmeldung erstellt der Server ein JWT und sendet es an den Client. Der Client fügt JWT für nachfolgende Anforderungen in den Autorisierungsheader (Bearer-Token) ein. Der Server überprüft die Signatur und prüft das Ablaufdatum – eine Datenbanksuche ist nicht erforderlich.
Beispiele
JWT Struktur
Eingang: Ein typischer JWT
Ausgabe: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSIsImV4cCI6MTY5MzYxMjgwMH0.signature
Decodierter Header
Eingang: Erster Teil entschlüsselt
Ausgabe: {"alg": "HS256", "typ": "JWT"}
Entschlüsselte Nutzlast
Eingang: Zweiter Teil entschlüsselt
Ausgabe: {"sub": "user1", "name": "Alice", "iat": 1693526400, "exp": 1693612800}
Häufige Probleme
- Entschlüsseln vs. Verifizieren – das Entschlüsseln eines JWT (Lesen seines Inhalts) beweist NICHT, dass er authentisch ist. Überprüfen Sie immer die serverseitige Signatur mit dem geheimen Schlüssel, bevor Sie Ansprüchen vertrauen.
- Speichern von JWTs in localStorage – dadurch sind sie für JavaScript zugänglich und anfällig für XSS-Angriffe. Speichern Sie in httpOnly Cookies für mehr Sicherheit.
- Langlebige Token – wenn ein Token gestohlen wird, bleibt er bis zum Ablauf gültig. Verwenden Sie kurzlebige Zugriffstoken (15–60 Minuten) mit Aktualisierungstoken für lange Sitzungen.
- Sensible Daten in der Nutzlast – die Nutzlast ist für jeden mit dem Token lesbar (es ist Base64, nicht verschlüsselt). Geben Sie niemals Passwörter, Kreditkarten oder Geheimnisse in die Nutzlast ein.
Tipps
- Überprüfen Sie immer die serverseitige Signatur JWT, bevor Sie irgendwelchen Ansprüchen vertrauen – die Dekodierung allein ist keine Authentifizierung.
- Verwenden Sie kurzlebige Zugriffstoken (15–60 Minuten) mit Aktualisierungstoken für lange Sitzungen, um Schäden durch Tokendiebstahl zu minimieren.
- Speichern Sie JWTs in httpOnly-, Secure- und SameSite-Cookies statt in localStorage, um XSS-Angriffe zu verhindern.
- Verwenden Sie unseren JWT-Decoder, um Token-Inhalte zum Debuggen zu überprüfen – Ihr Token verlässt niemals Ihren Browser.