JWT-Generator (HS256)
Erstelle mit HS256 signierte JSON Web Token lokal in deinem Browser, ohne dass etwas hochgeladen wird.
JWT-Generator (HS256) wird geladen… Wenn nichts passiert, aktiviere JavaScript.
Ein JSON Web Token, kurz JWT, ist ein kompaktes, signiertes Token-Format, das in der modernen Authentifizierung und Autorisierung überall zum Einsatz kommt. Ein JWT packt einen Header und eine Nutzlast aus Claims in zwei Base64url-codierte Segmente und hängt anschließend eine Signatur an, die beweist, dass das Token nicht manipuliert wurde. Dieser Generator baut für dich ein vollständig gültiges HS256-Token: Er setzt den Standard-Header zusammen, codiert deine Nutzlast und signiert das Ergebnis mit HMAC-SHA256 unter Verwendung eines Geheimnisses, das du angibst. Er ist das natürliche Gegenstück zu einem JWT-Decoder und lässt dich die Token erstellen, die du sonst nur untersuchen würdest.
Häufig gestellte Fragen
Wird mein Geheimnis oder meine Nutzlast irgendwohin gesendet?
Was ist HS256 und wie funktioniert die Signatur?
Was sollte ich in die Nutzlast schreiben?
Wie füge ich eine Ablaufzeit hinzu?
Ist HS256 sicher genug für die Produktion?
Warum habe ich einen Fehler wegen ungültigem JSON erhalten?
Kann ich das gerade erzeugte Token decodieren?
Funktioniert der Generator offline?
Über JWT-Generator (HS256)
HS256 ist der am weitesten verbreitete JWT-Algorithmus. Er ist symmetrisch, das heißt, dasselbe Geheimnis wird sowohl zum Erstellen als auch zum Überprüfen der Signatur verwendet, was die Dinge einfach hält, wenn ein einzelner Dienst seine eigenen Token ausstellt und prüft. Um das Werkzeug zu nutzen, füge eine JSON-Nutzlast mit deinen Claims ein (häufige sind sub für das Subjekt, iat für den Ausstellungszeitpunkt und exp für den Ablauf), gib dein Signaturgeheimnis ein und klicke auf Generieren. Das Werkzeug prüft, ob deine Nutzlast wohlgeformtes JSON ist, meldet einen klaren Fehler, falls nicht, und erzeugt ein Token in der vertrauten Form Header.Nutzlast.Signatur, bereit zum Kopieren.
Die Signatur geschieht vollständig in deinem Browser über die native Web-Crypto-API, ohne externe Bibliothek und ohne Netzwerkanfrage. Deine Nutzlast und, was entscheidend ist, dein Geheimnis verlassen niemals dein Gerät, werden niemals protokolliert und niemals übertragen. Da das Geheimnis das Einzige ist, das vertraulich bleiben muss, damit HS256 sicher ist, ist die lokale Verarbeitung genau der richtige Ansatz. Das Werkzeug funktioniert zudem vollständig offline, sobald die Seite geladen ist.
Das Token-Format, das offen vor aller Augen verborgen liegt
JWTs wurden 2015 im RFC 7519 standardisiert, als Teil einer Familie von JOSE-Spezifikationen (JavaScript Object Signing and Encryption). Das Format ist bewusst URL-sicher: Jedes der drei Segmente ist Base64url-codiert, was die Zeichen Plus und Schrägstrich durch Bindestrich und Unterstrich ersetzt, damit ein Token in einer URL, einem HTTP-Header oder einem Cookie ohne weiteres Escaping reisen kann.
Ein Detail, das viele Entwickler überrascht, ist, dass die Nutzlast eines signierten JWT nicht verschlüsselt, sondern nur codiert ist. Jeder, der das Token abfängt, kann das mittlere Segment in Base64url decodieren und jeden Claim darin lesen. Die Signatur garantiert Integrität und Authentizität (dass das Token von jemandem ausgestellt wurde, der das Geheimnis besitzt, und nicht verändert wurde), aber sie tut nichts, um den Inhalt zu verbergen. Deshalb solltest du niemals Passwörter oder andere Geheimnisse in die Nutzlast eines JWT legen.
Die berüchtigtste JWT-Schwachstelle betraf das Algorithmusfeld im Header. Einige frühe Bibliotheken vertrauten dem alg-Wert blind, was einem Angreifer erlaubte, ihn auf 'none' zu setzen und die Signatur ganz zu entfernen, oder ein Token von einem asymmetrischen auf einen symmetrischen Algorithmus umzustellen und es mit dem öffentlichen Schlüssel als HMAC-Geheimnis zu fälschen. Moderne Bibliotheken wehren sich dagegen, indem sie verlangen, dass der erwartete Algorithmus von vornherein angegeben wird, eine Lektion, die geprägt hat, wie JWTs heute validiert werden.