🔏 JWT-Encoder
HS256 JSON Web Tokens lokal erstellen und signieren.
🔒 Ihre Daten verlassen niemals Ihren Browser
Signiertes Token
Erstellen Sie signierte JSON Web Tokens direkt in Ihrem Browser. Bearbeiten Sie Header- und Payload-JSON, geben Sie einen geheimen Schlüssel ein und erhalten Sie ein einsatzbereites HS256-Token, lokal signiert mit der WebCrypto-HMAC-SHA256-Implementierung, sodass Ihre Daten Ihr Gerät nie verlassen. Es ist für das Testen authentifizierter APIs, das Nachstellen tokenbezogener Fehler und das Lernen gedacht, wie JWTs aufgebaut sind.
Wie die Signierung funktioniert
Ein JWT hat drei base64url-kodierte Segmente, getrennt durch Punkte: header.payload.signature. Der Encoder erledigt Folgendes:
- Header und Payload als JSON parsen und bei ungültigem JSON sofort abbrechen.
- Jeden JSON-String exakt so base64url-kodieren, wie er geschrieben ist (Padding entfernt,
+→-,/→_). signature = HMAC-SHA256(header + "." + payload, secret)berechnen und die rohen Bytes base64url-kodieren.
Das Ergebnis ist das Token. Jedes Segment nutzt base64url, das groß-/kleinschreibungssensitiv ist und das abschließende =-Padding entfernt. Die Verifizierung ist dieselbe Operation rückwärts: Der Server berechnet den HMAC mit seiner Kopie des Schlüssels neu und vergleicht. Ändert sich ein einziges Zeichen der Payload, passt die Signatur nicht mehr.
Schritt für Schritt
- Header bearbeiten — der Standard
{"alg": "HS256", "typ": "JWT"}funktioniert, sofern Sie keine zusätzlichen Header-Felder wiekidbenötigen. - Payload bearbeiten — Claims wie
sub,name,iat,expoderroleshinzufügen. Werte müssen gültiges JSON sein. - Schlüssel eingeben — den geteilten HMAC-Schlüssel eintippen. Verwenden Sie einen Wegwerf-Testwert, niemals ein Produktionsgeheimnis.
- Token ablesen — das Feld signiert beim Tippen automatisch neu; die Schaltfläche „Signieren“ erzwingt einen erneuten Durchlauf.
- Kopieren — ein Klick kopiert das fertige Token.
Praxisbeispiel: Ein bekanntes Token nachbauen
Header (kompakt, ohne Leerzeichen):
{"alg":"HS256","typ":"JWT"}
Payload:
{"sub":"1234567890","name":"John Doe","iat":1516239022}
Schlüssel: your-256-bit-secret. Die kodierten Teile lauten:
- Header →
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 - Payload →
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ - Signatur →
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
was das vollständige Token ergibt:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Ändern Sie den Schlüssel um ein Zeichen, und das Signatursegment ändert sich vollständig, während die ersten beiden Segmente identisch bleiben. Das ist der ganze Punkt: Die Payload ist öffentlich, die Signatur ist der Beweis.
Signieren ist keine Verschlüsselung
Dies ist der am meisten missverstandene Teil von JWTs. HS256 bietet Integrität und Authentizität, nicht Vertraulichkeit. Dekodieren Sie das obige Token mit dem JWT-Decoder, und die Claims erscheinen im Klartext — base64url ist eine Kodierung, keine Verschlüsselung. Wer das Token abfängt, kann es zudem bis zum Ablauf erneut einspielen, also gilt:
- Nur unkritische Claims in die Payload legen: Benutzer-ID, Rollen, Scopes, Ablaufzeit.
- Geheimnisse, Passwörter und personenbezogene Daten serverseitig halten.
- TLS verwenden, damit das Token unterwegs nicht entwendet werden kann.
- Die Signatur und den
exp-Claim auf dem Server prüfen, bevor irgendetwas vertraut wird.
Auch das Tool selbst kann einen schwachen Schlüssel nicht sicher machen. Ein geleaktes oder erratbares HMAC-Geheimnis erlaubt jedem, gültige Token zu prägen, weshalb diese Seite nur für die Entwicklung gedacht ist.
Häufige Fehler
- Ein Produktionsgeheimnis einfügen. Signieren Sie Test-Token mit Test-Schlüsseln und rotieren Sie alles, was je in ein Browser-Tool eingegeben wurde.
- Vergessen, dass Leerzeichen zählen. Der Standard-Header im Textfeld enthält Zeilenumbrüche und Einrückung, seine Signatur unterscheidet sich also von der kompakten Form oben, obwohl das JSON semantisch identisch ist.
- Claim-Validierung erwarten. Ein
expin der Vergangenheit, einnbfin der Zukunft oder ein falsch geschriebenerrole-Claim werden ohne Widerspruch signiert. Validierung ist Aufgabe des Servers. - HS256 zwischen nicht vertrauenswürdigen Parteien verwenden. Ein symmetrischer Schlüssel muss bei jedem Verifizierer geheim bleiben. Müssen mehrere Dienste verifizieren, ist ein asymmetrischer Algorithmus vorzuziehen.
- Das Token für verschlüsselt halten. Siehe oben — gehen Sie davon aus, dass die Payload lesbar ist.
HS256 vs. RS256
HS256 ist symmetrisch: Ein Schlüssel signiert und verifiziert, jeder verifizierende Dienst muss also auch signieren können, und ein Leck bei einem von ihnen kompromittiert alle. RS256 und ES256 sind asymmetrisch: Ein privater Schlüssel signiert, ein öffentlicher verifiziert. Diese Trennung erlaubt es API-Gateways und Resource-Servern, Token zu verifizieren, ohne Signierbefugnis zu besitzen, weshalb Public-Key-Algorithmen mehrdienstige Architekturen dominieren.
Dieser Encoder unterstützt nur HS256, weil ein Browser-Test keine Verwaltung privater Schlüssel braucht. Nutzt Ihr Zielsystem RS256, prägen Sie Token mit Ihrem eigenen Werkzeug und bestätigen Sie Struktur und Claims mit dem JWT-Decoder — der dekodierte Header wird "alg": "RS256" zeigen.
Ein Token außerhalb des Browsers verifizieren
Sie können die Signatur ohne jede JWT-Bibliothek nachbauen. Ein kurzes Node-Skript mit dem eingebauten crypto-Modul tut genau das, was ein Server bei jeder Anfrage tut:
const crypto = require('crypto');
const [h, p, sig] = token.split('.');
const expected = crypto.createHmac('sha256', secret)
.update(`${h}.${p}`).digest('base64url');
console.log(expected === sig); // true nur, wenn der Schlüssel passt
Sowohl Node als auch moderne Browser stellen base64url bereit, eine manuelle +//-Ersetzung ist also nicht nötig. Ist der Vergleich falsch, wurde das Token mit einem anderen Schlüssel signiert, die Payload verändert oder Header und Payload wurden mit abweichenden Leerzeichen neu serialisiert. Weisen Sie es zurück und machen Sie weiter.
Verwandte Tools
- JWT-Decoder — Header, Payload und Signatur eines beliebigen Tokens untersuchen.
- Base64 Encoder/Decoder — Die rohen Bytes hinter jedem JWT-Segment sehen.
- Hash-Generator — HMAC-Ausgabe und andere Digest-Algorithmen vergleichen.
- Passwort-Generator — Einen starken zufälligen HMAC-Schlüssel erzeugen.
Häufig gestellte Fragen
Welchen Signaturalgorithmus unterstützt dieser JWT-Encoder?
Er signiert mit HS256 (HMAC-SHA256), dem am weitesten verbreiteten symmetrischen JWT-Algorithmus, über die native WebCrypto-API des Browsers. Derselbe geheime String signiert und verifiziert später das Token. Asymmetrische Algorithmen wie RS256 benötigen ein öffentliches/privates Schlüsselpaar und werden hier nicht unterstützt.
Wird ein JWT verschlüsselt oder signiert?
Signiert, nicht verschlüsselt. HS256 garantiert, dass das Token von jemandem mit dem geheimen Schlüssel erstellt und die Payload nicht verändert wurde, aber Header und Payload sind nur base64url-kodiert — jeder kann sie dekodieren und lesen. Legen Sie niemals Passwörter, API-Schlüssel oder personenbezogene Daten in eine JWT-Payload.
Wie sollten Header und Payload aussehen?
Beide Felder erwarten gültiges JSON. Der Header lautet normalerweise {"alg": "HS256", "typ": "JWT"} und die Payload trägt Ihre Claims wie sub, name, iat und exp. Das Tool lädt ein funktionierendes Beispiel vor, das Sie frei bearbeiten können; ungültiges JSON stoppt die Signierung und zeigt einen Fehler.
Prüft dieses Tool meine Claims oder die Ablaufzeit?
Nein. Es signiert genau das, was Sie eingeben. Es prüft weder, ob exp in der Vergangenheit liegt, noch ob nbf in der Zukunft liegt, noch ob Claim-Namen den registrierten Konventionen folgen. Um ein fertiges Token zu untersuchen, ohne es zu verifizieren, nutzen Sie den JWT-Decoder.
Warum unterscheidet sich mein Token von der Ausgabe eines anderen Encoders?
Die Signatur deckt die exakten Bytes des kodierten Headers und der Payload ab, und der Encoder entfernt führende und abschließende Leerzeichen, bewahrt aber alles innerhalb des JSON. Ein Leerzeichen nach einem Doppelpunkt, ein Zeilenumbruch oder eine andere Schlüsselreihenfolge verändert den base64url-String und damit die Signatur — trotzdem können alle gültige Token sein.
Wie lang sollte ein HS256-Schlüssel sein?
Mindestens 32 Byte (256 Bit) Zufallsdaten, passend zur Ausgabegröße von SHA-256. WebCrypto akzeptiert jede Stringlänge, dieses Tool signiert also auch mit einem kurzen Passwort, aber ein kurzer Schlüssel lässt sich offline per Brute-Force knacken. Erzeugen Sie für alles Echte einen langen Zufallsschlüssel.
Geprüft vom HandyTools-Hub-Team · Zuletzt aktualisiert