Utilia

JWT-Generator und -Prüfer

JWT erstellen und prüfen mit HS256, RS256, PS256, ES256 oder EdDSA: Claims bearbeiten, exp und iat setzen und Signaturen lokal im Browser verifizieren.

Schlüssel und Tokens sind Geheimnisse. Alles wird lokal mit der Web-Crypto-API Ihres Browsers signiert und geprüft: Nichts wird hochgeladen.

Signiertes JWT erstellen

Zeit-Claims:

JWT prüfen

So erstellen Sie ein signiertes JWT

  1. Wählen Sie den „Algorithmus“: HS256/384/512 (gemeinsames Secret), RS256/384/512 oder PS256/384/512 (RSA), ES256/384/512 (ECDSA auf P-256, P-384 oder P-521) oder EdDSA (Ed25519, sofern Ihr Browser es unterstützt).
  2. Bearbeiten Sie „Header (JSON)“ und „Payload (JSON-Claims)“. Das Feld alg folgt immer dem gewählten Algorithmus, typ ist standardmäßig JWT.
  3. Fügen Sie mit den Schaltflächen für Zeit-Claims Datumswerte hinzu: „iat = jetzt“, „nbf = jetzt“ oder wählen Sie eine Gültigkeitsdauer wie „in 1 Stunde“ und klicken Sie auf „exp setzen“. Die Werte sind NumericDates, also Sekunden seit dem 1. Januar 1970 UTC.
  4. Geben Sie das „Secret“ ein (bei HS-Algorithmen, als Text oder Base64/Base64url unter „Secret-Format“) oder den „Privaten Schlüssel (PEM oder JWK)“. Noch keinen Schlüssel? Klicken Sie auf „Testschlüssel erzeugen“.
  5. Klicken Sie auf „Token signieren“ und dann auf „Kopieren“ – oder auf „Dieses Token prüfen“, um es sofort zu testen.

So prüfen Sie ein JWT

  1. Fügen Sie das Token unter „Zu prüfendes Token“ ein.
  2. Wählen Sie den „Erwarteten Algorithmus“. Mit „Aus dem Token-Header (nie none)“ wird akzeptiert, was im Header steht, außer none. Wählen Sie einen bestimmten Algorithmus, lehnt das Tool jedes anders signierte Token ab – so wie es ein echter Server tun sollte.
  3. Geben Sie das Secret ein oder den „Öffentlichen Schlüssel (PEM oder JWK)“: einen PEM-Block PUBLIC KEY, RSA PUBLIC KEY oder CERTIFICATE, ein JWK oder ein JWK Set (verwendet wird der Schlüssel, dessen kid zum Header passt).
  4. Legen Sie bei Bedarf eine „Uhrentoleranz (Sekunden)“ fest, um kleine Zeitabweichungen zu tolerieren, und klicken Sie auf „Token prüfen“.

Das Ergebnis zeigt, ob die Signatur gültig ist, und prüft anschließend exp (Ablaufzeit) und nbf (nicht vor) gegen die aktuelle Uhrzeit Ihres Computers. Ein Token mit korrekter Signatur, aber einem Ablaufdatum in der Vergangenheit wird als abgelaufen gemeldet, nicht als gültig.

Schlüssel und Formate

Zum Signieren akzeptiert das Tool PKCS#8-Blöcke PRIVATE KEY, PKCS#1-Blöcke RSA PRIVATE KEY und SEC1-Blöcke EC PRIVATE KEY (intern in PKCS#8 umgewandelt) sowie private JWKs. Passwortgeschützte Schlüssel müssen zuerst ohne Passwort exportiert werden. „Testschlüssel erzeugen“ erstellt ein zufälliges Secret in Hash-Größe für HS-Algorithmen, ein 2048-Bit-RSA-Schlüsselpaar für RS und PS, ein Paar auf der passenden Kurve für ES oder ein Ed25519-Paar. Sie erhalten die Schlüssel als PEM und JWK, und sie werden auf beiden Seiten eingetragen, sodass ein Hin-und-zurück-Test sofort klappt.

Die Signaturen folgen RFC 7515 und RFC 7518: RSA-PSS verwendet einen Salt von der Länge des Hashs, und ECDSA-Signaturen sind die rohe Verkettung r||s. Die Implementierung reproduziert das HS256-Beispiel aus RFC 7515, Anhang A.1.

Sicherheitshinweise

  • Alles läuft in Ihrem Browser mit der Web-Crypto-API. Weder Tokens noch Schlüssel werden irgendwohin gesendet – verwenden Sie trotzdem lieber Testschlüssel als Produktions-Secrets.
  • alg: none wird nie signiert und nie akzeptiert.
  • HMAC-Secrets sollten mindestens so lang sein wie der Hash (32 Byte bei HS256). Ein kürzeres Secret löst eine Warnung aus.
  • Eine Signatur belegt Integrität und Herkunft, nicht aber, dass die Claims angemessen sind: Server müssen zusätzlich iss, aud und die Scopes prüfen.

Häufige Fragen

Was ist der Unterschied zwischen HS256 und RS256?

HS256 verwendet ein einziges gemeinsames Secret zum Signieren und zum Prüfen – jede prüfende Stelle könnte also auch Tokens fälschen. RS256 (ebenso PS256, ES256 und EdDSA) signiert mit einem privaten Schlüssel und prüft mit einem öffentlichen Schlüssel, den man gefahrlos veröffentlichen kann.

Warum erscheint trotz gültiger Signatur ein Fehler?

Weil das Token außerhalb seines Gültigkeitszeitraums liegt: exp liegt in der Vergangenheit oder nbf in der Zukunft. Signaturprüfung und Zeitprüfung werden getrennt gemeldet.

Warum wird alg „none“ abgelehnt?

Ein nicht signiertes Token kann jeder erstellen. Dass solche Tokens akzeptiert wurden, war eine klassische Schwachstelle von JWT-Bibliotheken. Dieses Tool lehnt sie deshalb sowohl beim Signieren als auch beim Prüfen ab.

Kann ich meinen eigenen RSA- oder EC-Schlüssel verwenden?

Ja. Fügen Sie zum Signieren den privaten Schlüssel als PEM oder JWK ein und zum Prüfen den öffentlichen Schlüssel. Das Tool kontrolliert, ob Schlüsseltyp und Kurve zum gewählten Algorithmus passen.

Warum ist EdDSA deaktiviert?

Ihr Browser unterstützt Ed25519 in Web Crypto noch nicht. Aktuelle Versionen von Chrome, Edge, Firefox und Safari tun es.