BrowserTools
Werbung
Startseite / Encoder / JWT-Generator (HS256)

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?
Nein. Das Token wird vollständig in deinem Browser mithilfe der nativen Web-Crypto-API erstellt und signiert. Deine Nutzlast und dein Signaturgeheimnis verlassen niemals dein Gerät, werden niemals protokolliert und niemals übertragen, was wesentlich ist, weil das Geheimnis ein HS256-Token sicher hält.
Was ist HS256 und wie funktioniert die Signatur?
HS256 ist HMAC mit SHA-256, ein symmetrisches Signaturverfahren. Das Werkzeug verbindet den Base64url-codierten Header und die Nutzlast mit einem Punkt, berechnet einen HMAC-SHA256 über diese Zeichenkette mit deinem Geheimnis als Schlüssel und codiert das Ergebnis als Signatur in Base64url. Jeder, der dasselbe Geheimnis besitzt, kann sie neu berechnen und überprüfen.
Was sollte ich in die Nutzlast schreiben?
Die Nutzlast ist ein JSON-Objekt aus Claims. Registrierte Claims umfassen sub (Subjekt), iss (Aussteller), aud (Zielgruppe), iat (ausgestellt am), exp (Ablauf) und nbf (nicht vor), die für die Zeitfelder alle Unix-Zeitstempel verwenden. Du kannst auch beliebige eigene Claims hinzufügen, die deine Anwendung benötigt, etwa eine Benutzerrolle oder eine Mandanten-ID.
Wie füge ich eine Ablaufzeit hinzu?
Füge einen exp-Claim mit einem Unix-Zeitstempel in Sekunden (nicht Millisekunden) für den Zeitpunkt hinzu, ab dem das Token nicht mehr gültig sein soll. Ein Token, das ab jetzt eine Stunde gültig ist, würde zum Beispiel die aktuelle Unix-Zeit plus 3600 verwenden. Prüfer, die exp beachten, lehnen das Token nach diesem Zeitpunkt ab.
Ist HS256 sicher genug für die Produktion?
HS256 ist sicher, wenn das Geheimnis lang, zufällig und vertraulich gehalten wird, weshalb empfohlen wird, ein Geheimnis von mindestens 256 Bit (32 Byte) zu verwenden. Seine Einschränkung ist, dass dasselbe Geheimnis signiert und überprüft, sodass jede Partei, die überprüfen kann, auch Token fälschen kann. Wenn Aussteller und Prüfer verschiedene Parteien sind, passt ein asymmetrischer Algorithmus wie RS256 meist besser.
Warum habe ich einen Fehler wegen ungültigem JSON erhalten?
Das Nutzlastfeld muss gültiges JSON enthalten. Häufige Fehler sind abschließende Kommas, einfache statt doppelte Anführungszeichen um Schlüssel und Zeichenkettenwerte oder Schlüssel ohne Anführungszeichen. Korrigiere das JSON, damit es sauber analysiert wird, und der Generator signiert es. Die Fehlermeldung gibt an, wo die Analyse fehlgeschlagen ist.
Kann ich das gerade erzeugte Token decodieren?
Ja. Die Ausgabe ist ein Standard-JWT, also kannst du es in jeden JWT-Decoder einfügen, einschließlich des begleitenden Decoder-Werkzeugs, um Header und Nutzlast zu untersuchen. Um die Signatur zu überprüfen, brauchst du dasselbe Geheimnis, mit dem du es hier signiert hast.
Funktioniert der Generator offline?
Ja. Er stützt sich nur auf die Web-Crypto-API, die in moderne Browser eingebaut ist, ohne externe Bibliotheken. Sobald die Seite geladen ist, gibt es keine Netzwerkanfragen, sodass du Token ganz ohne Internetverbindung erzeugen kannst.

Ü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.

Werbung
Werbung
Werbung