Anleitung
- Wählen Sie HS256, HS384 oder HS512.
- Bearbeiten Sie die Payload-Claims und klicken Sie auf „iat und exp setzen“, um die aktuelle Zeit und ein Ablaufdatum hinzuzufügen.
- Geben Sie ein Test-Secret ein oder erzeugen Sie ein zufälliges 256-Bit-Secret.
- Kopieren Sie den signierten Token. Um einen Token zu prüfen, wechseln Sie zu „Signatur prüfen“, fügen Sie ihn ein und geben Sie das Secret ein.
So funktioniert es
Ein JSON Web Token (RFC 7519) besteht aus drei Base64URL-kodierten Teilen: einem Header, einem Payload mit Claims und einer Signatur. Bei den HMAC-Algorithmen HS256, HS384 und HS512 ist die Signatur ein HMAC mit SHA-256, SHA-384 bzw. SHA-512 über „header.payload“, geschlüsselt mit einem gemeinsamen Geheimnis. Jeder, der das Geheimnis kennt, kann Tokens erstellen und verifizieren.
Das Tool serialisiert Header und Payload als kompaktes JSON, kodiert sie und signiert sie mit crypto.subtle, der in Ihren Browser integrierten Web Crypto API. Das alg-Feld im Header entspricht immer dem gewählten Algorithmus, typ ist standardmäßig JWT, und alle weiteren Header-Felder wie kid bleiben erhalten. „iat und exp setzen“ schreibt die aktuelle Zeit als iat (issued at) und ergänzt die gewählte Lebensdauer als exp, beides in Sekunden seit dem 1. Januar 1970 UTC. Das Ergebnis stimmt mit anderen JWT-Bibliotheken überein; zum Beispiel wird das klassische jwt.io-Beispieltoken exakt reproduziert.
Das Geheimnis kann Klartext sein (seine UTF-8-Bytes sind der Schlüssel) oder Base64/Base64URL-kodierte Bytes, wie sie viele Frameworks verwenden. Die Schaltfläche „Zufallsgeheimnis“ erzeugt 32 zufällige Bytes mit crypto.getRandomValues. Verwenden Sie für HS256 mindestens 32 zufällige Bytes; kurze, von Menschen gewählte Geheimnisse können aus jedem Token offline erraten werden.
Die Verifizierung dekodiert das Token, prüft, ob es einen HMAC-Algorithmus verwendet, und berechnet die Signatur mit crypto.subtle.verify neu. Sie zeigt außerdem an, wenn exp oder nbf bedeuten, dass das Token abgelaufen oder noch nicht gültig ist. RS256, ES256 und andere Public-Key-Algorithmen werden nicht unterstützt, und die Verifizierung hier prüft weder Issuer, Audience noch andere Claims, die Ihre Anwendung möglicherweise benötigt.
Beispiele
Lokales Testen einer API
Ihr Entwicklungsserver erwartet HS256-Tokens, die mit „dev-secret-change-me“ signiert sind. Setzen Sie sub auf eine Test-Benutzer-ID, klicken Sie auf „iat und exp setzen“ mit 1 Stunde, geben Sie das Geheimnis ein und senden Sie das Token im Authorization: Bearer-Header.
Prüfen, mit welchem Secret ein Token signiert wurde
Ein Staging-Token wird abgelehnt. Fügen Sie ihn unter „Signatur prüfen“ ein und probieren Sie das Staging-Secret: Die Meldung „Signatur ungültig“ zeigt, dass der Token mit einem anderen Secret signiert wurde oder das Secret in einem anderen Format vorliegt (Text vs. Base64).
Das jwt.io-Beispiel reproduzieren
Mit Header {"alg":"HS256","typ":"JWT"}, Payload {"sub":"1234567890","name":"John Doe","iat":1516239022} und dem Secret „your-256-bit-secret“ endet der Token auf SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, genau wie auf jwt.io.
Häufig gestellte Fragen
Wird mein Secret an Ihren Server gesendet?
Nein. Signieren und Prüfen laufen mit der Web Crypto API in Ihrem Browser; das Secret wird nirgends gespeichert oder gesendet. Wir empfehlen trotzdem nur Test-Secrets, denn ein echtes Signatur-Secret sollte niemals auf einer Website eingegeben werden.
Warum ist die Signatur ungültig, obwohl das Secret stimmt?
Überprüfen Sie das Secret-Format. Manche Systeme verwenden den Text des Secrets, andere dekodieren es zuerst aus Base64, was andere Schlüsselbytes ergibt. Prüfen Sie außerdem, dass der Token nicht verändert wurde und denselben Algorithmus verwendet.
Kann ich RS256- oder ES256-Tokens erstellen?
Mit diesem Tool nicht. Es unterstützt nur die HMAC-Algorithmen mit gemeinsamem Secret HS256, HS384 und HS512.
Ist die Payload verschlüsselt?
Nein. Ein signierter JWT ist nur kodiert; jeder kann die Payload dekodieren und lesen. Die Signatur beweist nur, dass er nicht verändert wurde. Geben Sie keine Passwörter oder andere Secrets in die Payload.
Datenschutz
Tokens werden nur in Ihrem Browser mit der Web Crypto API erstellt und überprüft. Header, Payload, Token und Secret werden nicht hochgeladen, gespeichert oder in Analysen einbezogen.