JWT-Signaturprüfer (RS256/ES256, Verifizierung mit öffentlichem Schlüssel)
Ein Entwickler-Tool, das mit RS256 oder ES256 signierte JWTs (JSON Web Tokens) direkt im Browser mithilfe eines öffentlichen Schlüssels im PEM-Format (SPKI) verifiziert. Es dekodiert außerdem Header/Payload und prüft den Ablaufzeitpunkt. Nichts von dem, was Sie eingeben, wird an einen Server gesendet; alles läuft im Browser.
Unterstützte Signaturalgorithmen
| Algorithmus | Schlüsseltyp | Hash-Funktion | Beschreibung |
|---|---|---|---|
| RS256 | RSA (RSASSA-PKCS1-v1_5) | SHA-256 | Signatur mit RSA-Public-Key-Kryptografie. Der Standardalgorithmus für ID-Tokens großer OAuth-2.0-/OpenID-Connect-Anbieter wie Google, Auth0 und Okta. |
| ES256 | ECDSA (Kurve P-256) | SHA-256 | Signatur mit Kryptografie auf Basis elliptischer Kurven, die bei kürzeren Schlüsseln und Signaturen ein zu RSA gleichwertiges Sicherheitsniveau bietet – zunehmend beliebt bei mobilen Apps und IoT-Geräten. |
Die Signatur eines JWT mit einem öffentlichen Schlüssel prüfen
Dieses Werkzeug prüft ein mit RS256 oder ES256 signiertes JWT gegen einen öffentlichen Schlüssel im PEM-Format nach SPKI. Es zeigt Kopf und Nutzlast entschlüsselt zusammen mit dem Ablauf an. Alles, was Sie eingeben, wird im Browser verarbeitet und niemals irgendwohin geschickt.
**Hervorzuheben ist, dass eine gültige Signatur und ein gültiges Token zweierlei sind.** Eine bestandene Signaturprüfung belegt allein, dass der Inhalt seit der Ausstellung nicht überschrieben wurde. Eine wirkliche Authentisierung verlangt darüber hinaus zu prüfen, ob `exp` für den Ablauf, `nbf` für den Beginn der Gültigkeit, `iss` für den Aussteller und `aud` für den vorgesehenen Empfänger mit Ihren Erwartungen übereinstimmen. **Die andere wohlbekannte Falle bei der Umsetzung besteht darin, den Kopf des Tokens selbst entscheiden zu lassen, mit welchem Verfahren geprüft wird.** Legt der Server den zulässigen `alg` nicht vorab fest, überlässt er diese Wahl einem Angreifer.
So prüfen Sie
- Fügen Sie das JWT ein Es ist eine Zeichenkette aus drei durch Punkte getrennten Teilen.
- Fügen Sie den öffentlichen Schlüssel im PEM-Format ein **Gebraucht wird der öffentliche, nicht der private Schlüssel.** RS256 nimmt einen RSA-Schlüssel, ES256 einen Schlüssel auf der Kurve P-256.
- Prüfen Sie die Signatur Das Werkzeug meldet, ob Schlüssel und Signatur zueinander passen.
- Sehen Sie den entschlüsselten Inhalt und den Ablauf ein **Ein Token mit bestandener Signaturprüfung darf dennoch nach Ablauf nicht mehr verwendet werden.** Sehen Sie sich beides an.
Tipps für die Nutzung
- Der öffentliche Schlüssel muss im PEM-Format (SPKI, beginnend mit „-----BEGIN PUBLIC KEY-----") vorliegen. Das direkte Einfügen einer privaten Schlüsseldatei oder eines Zertifikats (.crt) funktioniert nicht.
- Der Prüfalgorithmus wird automatisch anhand des
alg-Feldes im JWT-Header (RS256 oder ES256) gewählt – eine manuelle Auswahl ist nicht nötig. - Zusammen mit der Signaturprüfung wird auch der
exp-Claim im Payload geprüft und bei Ablauf gewarnt. Eine gültige Signatur bedeutet nicht, dass das Token weiterhin akzeptiert werden sollte. - Dieses Tool unterstützt nur RS256 und ES256. Um ein mit HS256 signiertes JWT zu prüfen, verwenden Sie das begleitende Tool JWT-Encoder, um mit demselben gemeinsamen Geheimnis erneut zu signieren und das Ergebnis zu vergleichen.
- Der zur Verifizierung verwendete öffentliche Schlüssel ist nicht geheim, daher können Sie bedenkenlos einen Schlüssel einfügen, der vom öffentlichen Endpunkt eines Identity-Providers (etwa einem JWKS) stammt.
Wofür Sie es nutzen können
Beim Einsehen des Inhalts eines Identitätstokens
Ein von einem Identitätsanbieter ausgestelltes Token lässt sich gegen dessen öffentlichen Schlüssel halten.
Beim Unterscheiden eines falschen Schlüssels von einer beschädigten Signatur
**Schlägt die Prüfung fehl, lässt sich vor Ort feststellen, welches von beidem die Ursache ist.**
Beim Erproben eines Schlüsselwechsels
Prüft man der Reihe nach mit altem und neuem Schlüssel, bestätigt sich, ob der Wechsel wie geplant abläuft.
Beim Verfolgen der Ursache einer Störung
Geht die Meldung ein, die Anmeldung schlage fehl, lässt sich zuerst klären, ob das Token selbst dafür verantwortlich ist.
Begriffe zur JWT-Prüfung
- RS256
- Ein Signaturverfahren mit einem RSA-Schlüssel und SHA-256. **Zum Signieren dient der private, zum Prüfen der öffentliche Schlüssel.**
- ES256
- Ein Signaturverfahren mit der Kurve P-256 und SHA-256. Schlüssel wie Signatur fallen kürzer aus als bei RSA.
- SPKI
- Die genormte Form, in der ein öffentlicher Schlüssel geführt wird. In PEM beginnt sie mit `-----BEGIN PUBLIC KEY-----`.
- Exp
- Die Angabe, die den Ablauf nennt. **So einwandfrei die Signatur auch sein mag, ein Token nach diesem Zeitpunkt darf nicht angenommen werden.**
- Nbf
- Die Angabe, ab wann das Token verwendbar ist. Davor ist es noch nicht in Kraft.
- Verfahrensverwechslung
- **Eine Schwäche von Umsetzungen, die mit dem Verfahren prüfen, das der Kopf des Tokens nennt.** Das zulässige Verfahren ist auf der prüfenden Seite festzulegen.
Häufig gestellte Fragen
Übrigens – HMAC versus Signaturen mit öffentlichem Schlüssel: Was ist der Unterschied?
JWT-Signaturverfahren lassen sich grob in zwei Familien einteilen: solche mit gemeinsamem Geheimnis (HMAC, z. B. HS256) und solche mit öffentlichem Schlüssel (RSA/ECDSA, z. B. RS256 und ES256). Bei einem gemeinsamen Geheimnis müssen sowohl Signierer als auch Prüfer dieselbe geheime Zeichenkette besitzen; bei Public-Key-Kryptografie besitzt nur der Signierer einen privaten Schlüssel, während jeder mit dem öffentlich verfügbaren Schlüssel prüfen kann. Dieser Unterschied prägt das API-Design maßgeblich. Das begleitende Tool JWT-Encoder (HS256) eignet sich, wenn derselbe Server Tokens ausstellt und prüft, während RS256/ES256 – der Schwerpunkt dieses Tools – sich eignen, wenn Aussteller und Prüfer zu völlig unterschiedlichen Organisationen oder Servern gehören.
In der Praxis werden ID-Tokens großer Identity-Provider wie Google OAuth 2.0, OpenID Connect, Auth0 und Okta fast ausnahmslos mit RS256 signiert (wobei ES256 oft als Alternative verfügbar ist). Dadurch besitzt nur der Identity-Provider den privaten Schlüssel, während beliebig viele Client-Anwendungen Tokens allein mit dem öffentlichen Schlüssel prüfen können – ein Geheimnis muss nicht an jeden Client verteilt werden, und das Risiko eines Schlüsselverlusts wird auf einen einzigen Punkt beim Signierer beschränkt.
RS256 und ES256 verwenden beide SHA-256 zum Hashen, unterscheiden sich aber in der zugrunde liegenden Kryptografie. RS256 nutzt RSA (typischerweise Schlüssel mit 2048 Bit oder mehr), was tendenziell größere Signaturen erzeugt, profitiert aber von ausgereiften, weitverbreiteten Bibliotheken. ES256 nutzt Kryptografie auf Basis elliptischer Kurven (P-256) und erreicht mit deutlich kürzeren Schlüsseln und Signaturen ein vergleichbares Sicherheitsniveau – eine zunehmend beliebte Wahl für mobile Umgebungen und APIs, bei denen die Payload-Größe eine Rolle spielt.