JWT, Base64 und Hashes kurz erklärt
Ein JSON Web Token (JWT) ist ein signierter Ausweis im Textformat. APIs, Single Sign-on und OAuth nutzen ihn, um zu belegen, wer eine Anfrage stellt. Wer ein Token vor sich hat, will meist wissen, was drinsteht, ob es noch gilt und ob die Signatur stimmt.
Aufbau eines JWT
Ein JWT besteht aus drei Base64URL-kodierten Teilen, getrennt durch Punkte: Header (Algorithmus und Schlüssel-ID), Payload (die Claims wie sub, exp oder aud) und Signatur. Header und Payload sind nur kodiert, nicht verschlüsselt. Jeder, der das Token sieht, kann sie lesen. Gehören vertrauliche Daten hinein, braucht es ein verschlüsseltes Token (JWE).
Signatur prüfen
- HS256, HS384, HS512: Aussteller und Empfänger teilen ein Secret. Wer es kennt, kann auch Tokens ausstellen.
- RS256, PS256: RSA-Signatur. Geprüft wird mit dem öffentlichen Schlüssel, den Identity-Provider meist als JWKS unter
/.well-known/jwks.jsonveröffentlichen. - ES256, ES384, ES512: ECDSA mit den Kurven P-256, P-384 und P-521. Kürzere Schlüssel, gleiche Sicherheit.
- EdDSA: Ed25519, schnell und robust gegen Implementierungsfehler.
Ein Token mit alg: none ist nicht signiert und darf nie akzeptiert werden. Das Werkzeug warnt außerdem vor abgelaufenen Tokens, fehlendem exp, Zeitangaben in Millisekunden und Headern, die einen eigenen Schlüssel mitbringen (jwk, jku).
Base64, Base64URL, Hex und URL-Kodierung
Base64 stellt beliebige Bytes mit 64 druckbaren Zeichen dar und wird für Mailanhänge, Zertifikate (PEM) und Data-URIs verwendet. Base64URL ersetzt + und / durch - und _ und lässt das Padding weg, damit das Ergebnis in URLs und JWTs passt. Hex schreibt jedes Byte als zwei Zeichen, die URL-Kodierung maskiert Sonderzeichen mit %. Beim Dekodieren erkennt das Werkzeug Binärdaten, formatiert JSON und erkennt gängige Dateitypen.
Prüfsummen und HMAC
Mit SHA-256 oder SHA-512 prüfst du, ob eine heruntergeladene Datei unverändert ist: Prüfsumme des Anbieters in das Vergleichsfeld einfügen, Datei hineinziehen, fertig. MD5 und SHA-1 gelten als gebrochen und sollten nur noch zum Vergleich mit alten Angaben genutzt werden. CRC32 erkennt Übertragungsfehler, schützt aber nicht vor Manipulation. Ein HMAC verbindet den Hash mit einem geheimen Schlüssel, so signieren etwa Webhooks ihre Nachrichten.
FAQ
Werden meine Tokens oder Schlüssel übertragen?
Nein. Dekodieren, Prüfen, Signieren und Hashen laufen per JavaScript und WebCrypto in deinem Browser. Token und Schlüssel landen auch nicht in der Adresszeile.
Wie prüfe ich ein Token von Entra ID, Auth0 oder Keycloak?
Öffne die JWKS-Adresse des Anbieters (meist unter /.well-known/openid-configuration als jwks_uri verlinkt), kopier das JSON und füge es als Schlüssel ein. Das Werkzeug wählt den Schlüssel mit der passenden kid.
Warum ist meine HS256-Signatur ungültig, obwohl das Secret stimmt?
Oft ist das Secret Base64-kodiert hinterlegt. Stell das Format des Secrets auf Base64 um. Achte auch auf Leerzeichen oder Zeilenumbrüche am Ende.
Ist ein JWT verschlüsselt?
Ein normales JWT (JWS) ist nur signiert. Header und Payload kann jeder lesen. Verschlüsselte Tokens (JWE) haben fünf Teile, das Werkzeug zeigt bei ihnen nur den Header.
Welche Prüfsumme soll ich verwenden?
Für Downloads und Integritätsprüfungen SHA-256 oder SHA-512. MD5 und SHA-1 nur noch, wenn ein Anbieter keine andere Prüfsumme veröffentlicht.