
JWT-Signatur gegen ein JWKS prüfen, ohne Backend
Fügen Sie Token und JWKS ein und prüfen Sie eine RS256-, ES256- oder HS256-Signatur im Browser. Schlüsselwahl per kid, Fehler und zu prüfende Claims.
Eine Signaturprüfung braucht das Token und den richtigen öffentlichen Schlüssel
Wer ein JWT dekodiert, sieht, was es behauptet. Wer es prüft, sieht, ob der erwartete Schlüssel diese Angaben signiert hat. Bei einem OpenID-Connect-Anbieter wie Auth0, Keycloak oder Cognito liegt dieser Schlüssel in einem JWKS, einem JSON-Dokument mit öffentlichen Schlüsseln. Dieser Leitfaden zeigt, wie der Prüfer einen Schlüssel auswählt und wie Sie seine Antwort lesen, wenn eine Integration scheitert. Grundlage ist das JWT-Verify-Tool. Es nimmt das JWKS als eingefügten Text und ruft nie eine Adresse ab, sodass kein Server nötig ist. Am 26. Oktober 2026 haben wir 31 Testfälle durch den Code des Prüfers geschickt und berichten jedes Ergebnis. Sie umfassen Tokens mit RS256, ES256 und HS256 sowie veränderte, abgelaufene und falsch zugeordnete. Die Regeln stammen aus den RFC 7515, 7517, 7518, 7519 und 8725. Wenn Sie ein Token erst lesen möchten, beginnen Sie mit unserem Leitfaden zum Erstellen und Dekodieren von JWTs.
Wie ein JWKS funktioniert und wie der Schlüssel gewählt wird
RFC 7517 definiert ein JWK Set als Objekt mit einem Array keys. Die Reihenfolge der Schlüssel drückt keine Vorliebe aus, sofern die Anwendung nichts anderes festlegt. Jeder Schlüssel nennt seinen Typ in kty und trägt die Zahlen, die für die Prüfung nötig sind.
Verbesserungen
crv, x und y. Ein P-256-Schlüssel erzeugt ES256-Signaturen.use sind optionale Angaben. use lautet sig zum Signieren oder enc zum Verschlüsseln.use) umfasste 997 Zeichen, ein eingefügtes JWKS bleibt also klein.oct enthält in k ein gemeinsames Geheimnis. Das ist privates Material, auch in einem Dokument namens Schlüsselsatz.RFC 7515 nennt kid einen Hinweis darauf, welcher Schlüssel das Token gesichert hat, und der Header ist optional. Der Prüfer vergleicht ihn mit der kid jedes JWK. Was ohne Treffer geschieht, hängt vom Tool ab, deshalb haben wir es getestet.
Verbesserungen
Das dritte Segment des Tokens ist die Signatur. Länge und Kodierung hängen vom Algorithmus ab, was manche Fehler erklärt, die wie Beschädigung aussehen.
Verbesserungen
Eine gültige Signatur zeigt, dass der Inhaber des privaten Schlüssels diesen Header und diese Nutzdaten signiert hat. Sie zeigt nicht, dass das Token für Ihren Dienst gedacht oder noch aktuell ist.
Verbesserungen
admin geändert. Das Ergebnis lautete Signatur ungültig.other und ein iss mit https://evil.example als Claim-Fehler, obwohl die Signatur stimmte.Ein OIDC-Token ohne Server untersuchen
Kopieren Sie das Zugriffs- oder ID-Token aus der fehlgeschlagenen Anfrage, ohne das Präfix Bearer. Holen Sie dann das JWKS beim Anbieter. Seine Adresse steht im Feld jwks_uri des Discovery-Dokuments, erreichbar unter der Adresse des Ausstellers plus /.well-known/openid-configuration.
https://IHRE_DOMAIN/.well-known/jwks.json.https://cognito-idp.REGION.amazonaws.com/USER_POOL_ID/.well-known/jwks.json und signiert seine Tokens mit RS256./realms/REALM/protocol/openid-connect/certs. Neuere Versionen setzen das alte Präfix /auth nicht mehr davor.Dieselben Entscheidungen gelten im Tool und im Produktionscode. Legen Sie sie einmal in Ihrer Konfiguration fest und lesen Sie sie nie aus dem Token.
Die Antwort des Prüfers lesen
Das Tool antwortet key_not_found, wenn das Token keine kid hat und der Satz mehrere Schlüssel enthält. Es antwortet auch so, wenn seine kid im Satz fehlt.
Das Tool hat einen Schlüssel gefunden, und die Prüfung ist gescheitert. Mehrere Ursachen führen zur selben Meldung.
Manche Antworten kommen vor jeder Signaturprüfung.
Bearer. In unserem Test hat das Tool es nicht entfernt. Ein Zeilenumbruch am Ende störte nicht.keys.alg none: Ein unsigniertes Token lässt sich nicht prüfen, und Ihr Server sollte es ebenfalls ablehnen.oct-Schlüssel.Vier Fehler bei der Prüfung mit einem JWKS
Die Signatur beweist, wer das Token ausgestellt hat. Sie sagt nichts darüber, was sein Inhaber in Ihrem Dienst darf.
Ein JWK mit d oder ein oct-Schlüssel mit k ist ein Geheimnis. Ein Satz öffentlicher Schlüssel braucht beides nie.
hasPrivate je Schlüssel, und die formatierte Ansicht entfernt d, die RSA-Faktoren und das k von oct-Schlüsseln.Der Header alg gehört dem Absender. Folgt der Prüfer ihm, wählt der Angreifer die Prüfung.
algorithms übergeben und dem Header alg vertrauen.alg none auf einer Testroute zulassen, die in die Produktion gelangt.use auf enc ebenfalls. Produktionscode sollte strenger sein.use und key_ops abgleicht, wie jose es tut.Beide Extreme scheitern. Das eine fügt jeder Anfrage einen Netzwerkaufruf hinzu, das andere sperrt Nutzer bei der ersten Rotation aus.
Vier Annahmen über JWKS und Signaturen
Die Angabe stammt vom Absender und beweist allein nichts.
Viele zögern, eines in ein Tool einzufügen.
oct-Schlüssel, dessen Wert k ein gemeinsames Geheimnis ist, das Sie nie veröffentlichen dürfen.Dieser Glaube führt zu Umwandlungscode, den ein JWT nicht braucht.
Die Vorstellung stammt von Bibliotheken, die Schlüssel auf einem Server laden und zwischenspeichern.
Im Browser prüfen und untersuchen
Das JWT-Verify-Tool prüft die Signatur und, auf Wunsch, Zielgruppe, Aussteller und Zeit-Claims. Es unterstützt 14 Algorithmen, darunter RS256, ES256 und HS256.
Token einfügen
Fügen Sie zuerst das kompakte JWT ein. Die Schlüssel-Tabs folgen dem alg aus seinem Header.
JWKS-Inhalt einfügen
Fügen Sie das JSON des Schlüsselsatzes, ein einzelnes JWK oder ein öffentliches PEM ein. Um einen PEM-Schlüssel vorher in ein JWK umzuwandeln, nutzen Sie den PEM-JWK-Konverter. Bei einem HS256-Token verwenden Sie den Tab HMAC-Secret.
Prüfungen einstellen
Geben Sie Zielgruppe und Aussteller ein, wenn sie verglichen werden sollen, und wählen Sie eine Zeittoleranz von 0, 60 oder 300 Sekunden. Die Option Ablauf ignorieren prüft die Signatur trotzdem.
Ergebnis lesen
Das Ergebnis zeigt gültig mit Algorithmus und kid oder einen Fehlercode, der oben im Abschnitt zur Fehlersuche beschrieben ist.
Der JWKS-Inspektor liest ein JWK oder JWKS, ohne etwas zu prüfen. Nutzen Sie ihn vor dem Prüfer, wenn ein Satz von jemand anderem stammt.
JWKS einfügen
Fügen Sie einen Schlüsselsatz oder einen einzelnen Schlüssel ein. Private Felder werden aus Ausgabe und Kopie entfernt.
Zur Ansicht Inventar wechseln
Das Inventar listet kid, kty, use, alg, crv und hasPrivate je Schlüssel auf, ohne Schlüsselmaterial auszugeben.
Schlüssel sortieren
Die Option Schlüssel sortieren ordnet das JSON, damit sich zwei Umgebungen per Diff vergleichen lassen.
Beide Seiten arbeiten mit eingefügtem Text. Einige Grenzen sollten Sie kennen.
Dieselben Prüfungen im Terminal und in Ihrem Code
Ersetzen Sie die Adresse durch Ihren Aussteller. Der letzte Befehl liest die kid aus dem ersten Segment eines Tokens in der Variablen TOKEN.
Einfaches Beispiel
createRemoteJWKSet lädt den Satz, speichert ihn zwischen und wählt den Schlüssel nach kid und alg. Algorithmus, Aussteller und Zielgruppe kommen aus Ihrer Konfiguration.
Einfaches Beispiel
createLocalJWKSet nimmt den Satz, den Sie schon haben. In unseren Tests warf es ERR_JWKS_NO_MATCHING_KEY bei unbekannter kid. Es warf ERR_JWKS_MULTIPLE_MATCHING_KEYS bei einem Token ohne kid und zwei RSA-Schlüsseln. Es warf ERR_JOSE_ALG_NOT_ALLOWED, wenn die Liste der Algorithmen das alg des Tokens ausschloss.
Einfaches Beispiel
Zusammenfassung
Die Prüfung mit einem JWKS läuft auf drei Entscheidungen hinaus. Wählen Sie den Schlüssel per kid und alg. Prüfen Sie iss, aud und exp. Fehlt der Schlüssel, laden Sie den Satz neu, statt dem Token zu vertrauen. Mit den Browser-Tools lässt sich jeder Fall mit eingefügtem Text nachstellen, bevor Sie einen Server anfassen. Sehen Sie den Satz an, prüfen Sie das Token und übernehmen Sie dieselben Einstellungen in Ihren Code.
Probieren Sie die Schlüssel-Tools im Browser aus
hasPrivate, bevor Sie es irgendwo einfügen.Verwandte Artikel

HTTP/2 und HTTP/3 ändern den Weg der Dateien, nicht ihre Größe. Messungen zu Größe, Kompilierzeit und Bundling zeigen, was Minifizierung noch bringt.

Rechnen Sie eine Unix-Epoche in ein lesbares Datum um und zurück, unterscheiden Sie Sekunden und Millisekunden und meiden Sie Zeitzonen-, JWT- und Zeitumstellungsfallen.

Lesen Sie einen Cron-Ausdruck Feld für Feld, prüfen Sie die nächsten Ausführungen in UTC oder Ortszeit und meiden Sie Fallen bei Schritten und Zeitzonen.