JWT-Decoder
JSON Web Tokens dekodieren und inspizieren. Header, Payload und Ablaufstatus anzeigen.
// Decode JWT (without verification)function decodeJWT(token) {const [header, payload] = token.split('.').slice(0, 2);return {header: JSON.parse(atob(header)),payload: JSON.parse(atob(payload))};}// Using jsonwebtoken library// npm install jsonwebtokenconst jwt = require('jsonwebtoken');const decoded = jwt.decode(token);const verified = jwt.verify(token, secret);
Ähnliche Rechner
Was ist ein JWT?
Ein JWT (JSON Web Token, ausgesprochen "Dschot") ist wie ein digitaler Reisepass. Es ist eine kompakte, eigenständige Methode, um Informationen sicher zwischen Parteien zu übertragen.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4ifQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Sieht wie Kauderwelsch aus? Es sind tatsächlich drei base64-codierte Teile, getrennt durch Punkte!
Warum JWTs existieren:
- Zustandslose Authentifizierung - Keine Notwendigkeit, Sitzungen auf dem Server zu speichern
- Cross-Domain - Funktioniert über verschiedene Dienste
- Eigenständig - Alle Infos sind im Token selbst
- Kompakt - Klein genug, um in Headers/URLs zu senden
JWT-Struktur erklärt
Ein JWT hat drei Teile: Header.Payload.Signatur
1. Header
{
"alg": "HS256",
"typ": "JWT"
}
Sagt uns den Token-Typ und Signaturalgorithmus.
2. Payload
{
"sub": "1234567890",
"name": "Max Mustermann",
"admin": true,
"exp": 1516242622
}
Enthält die tatsächlichen Daten (genannt "Claims").
3. Signatur Verifiziert, dass das Token nicht manipuliert wurde.
Jeder kann ein JWT lesen! Der Payload ist nur base64-codiert, nicht verschlüsselt. Legen Sie niemals sensible Daten (Passwörter, Kreditkarten) in ein JWT.
Gängige JWT-Claims
Registrierte Claims (Standard)
| Claim | Name | Beschreibung |
|---|---|---|
iss | Issuer | Wer das Token erstellt hat |
sub | Subject | Wer/was das Token betrifft |
aud | Audience | Wer das Token akzeptieren sollte |
exp | Expiration | Wann das Token abläuft |
iat | Issued At | Wann das Token erstellt wurde |
Wie JWT-Authentifizierung funktioniert
1. Benutzer meldet sich mit Anmeldedaten an
2. Server erstellt und gibt JWT zurück
3. Benutzer sendet JWT mit jeder Anfrage
4. Server verifiziert JWT und antwortet
Warum das besser ist als Sessions:
- Server muss nichts speichern
- Funktioniert über mehrere Server (Microservices)
- Einfach horizontal zu skalieren
JWT-Sicherheitsüberlegungen
JWTs sind standardmäßig nicht verschlüsselt! Jeder kann den Payload decodieren und lesen. Nur die Signatur verhindert Manipulation.
Häufige JWT-Schwachstellen:
1. None-Algorithmus-Angriff Angreifer setzen Algorithmus auf "none", um Signaturverifizierung zu umgehen. Lösung: Algorithmus immer auf dem Server validieren.
2. Schwacher geheimer Schlüssel Schwache Geheimnisse wie "secret" oder "passwort" können per Brute-Force geknackt werden. Lösung: Verwenden Sie 256+ Bit zufällige Schlüssel.
3. Kein Ablaufdatum
Tokens, die nie ablaufen, sind ein Sicherheitsrisiko.
Lösung: Immer exp Claim setzen (kurzlebig: 15min-1Stunde).
Sicherheits-Best-Practices:
- Starke, zufällige geheime Schlüssel verwenden (mindestens 256 Bits)
- Tokens kurzlebig halten (15 Minuten für Access-Tokens)
- Refresh-Tokens für lange Sitzungen verwenden
- Immer HTTPS verwenden
- Alle Claims serverseitig validieren