HMAC mit SHA-256. Gemeinsame symmetrische Schlüssel. Empfohlen für den allgemeinen Einsatz.
So funktioniert es
Ein JSON Web Token (JWT) ist ein kompaktes, signiertes Token, das Informationen (Claims) zwischen zwei Parteien transportiert. Es besteht aus drei durch Punkte getrennten Teilen —Header, Payload und Signatur—, jeweils Base64URL-codiert.
Im Modus Generieren definierst du Header und Payload in JSON und signierst mit einem geheimen Schlüssel (HMAC) oder einem privaten Schlüssel (RSA/ECDSA). Im Modus Lesen fügst du ein vorhandenes Token ein, um seinen Inhalt zu prüfen und die Signatur zu verifizieren.
Der Payload ist nicht verschlüsselt: Jeder kann ihn durch Decodieren des Base64URL lesen. Die Signatur garantiert nur, dass das Token nicht verändert wurde, sie verbirgt es nicht. Speichere niemals sensible Daten in einem JWT.
Beispiele
header{"alg":"HS256","typ":"JWT"} → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9payload{"sub":"1234567890","name":"John Doe","iat":1516239022} → eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQtokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5cDie Signatur (dritter Teil) hängt vom Algorithmus und vom Schlüssel ab; dieses Beispiel verwendet HS256 mit dem Schlüssel "your-256-bit-secret".Anwendungsfälle
- Benutzer in APIs authentifizieren: Der Server stellt ein signiertes Token aus und validiert es bei jeder Anfrage, ohne eine Sitzung zu speichern.
- Authentifizierungstokens inspizieren und debuggen, um ihre Claims (sub, exp, Rollen) und Daten zu sehen.
- Die Signatur eines Tokens mit dem geheimen oder dem öffentlichen Schlüssel verifizieren, um zu bestätigen, dass es nicht manipuliert wurde.
- Test-Tokens mit verschiedenen Algorithmen (HMAC, RSA, ECDSA) beim Entwickeln eines Authentifizierungsablaufs erzeugen.
Häufige Fragen
Ist der Inhalt eines JWT verschlüsselt?
Nein. Header und Payload sind nur Base64URL-codiert, was jeder decodieren kann. Die Signatur garantiert Integrität (dass nichts verändert wurde), nicht Vertraulichkeit.
Was ist der Unterschied zwischen HS256 und RS256?
HS256 verwendet einen einzigen gemeinsamen geheimen Schlüssel zum Signieren und Verifizieren (HMAC). RS256 ist asymmetrisch: Es signiert mit einem privaten Schlüssel und verifiziert mit dem öffentlichen, ideal, wenn viele Dienste validieren müssen, ohne ausstellen zu können.
Was bedeuten die Claims iat, exp und nbf?
Es sind Standard-Zeitstempel: iat (ausgestellt am), exp (läuft ab am) und nbf (nicht gültig vor). Sie werden in Sekunden seit 1970 (Unix-Epoche) angegeben.
Warum wird der Algorithmus "none" abgeraten?
Weil er ein unsigniertes Token erzeugt: Jeder kann den Payload ändern, und es wird trotzdem akzeptiert. Er ist nur für Tests nützlich, niemals in der Produktion.
Wird mein Token an einen Server gesendet?
Nein. Erzeugung, Decodierung und Verifizierung erfolgen vollständig in deinem Browser; das Token und die Schlüssel verlassen dein Gerät nie.