JWT Encoder/Decoder
JWT-Tokens sicher entschlüsseln, verifizieren und generieren
Entschlüsseltes JWT
Header
Payload
Signatur
Header
Payload
Geben Sie Ihre Payload-Daten im JSON-Format ein
Geheimer Schlüssel
Dieser geheime Schlüssel wird zum Signieren des JWT verwendet. Halten Sie ihn geheim!
Generiertes JWT
Umfassender Leitfaden zu JSON Web Tokens (JWT)
Was ist JWT (JSON Web Token)?
JSON Web Token (JWT) ist ein offener Standard (RFC 7519), der eine kompakte und eigenständige Methode zur sicheren Übertragung von Informationen zwischen Parteien als JSON-Objekt definiert. Diese Informationen können überprüft und als vertrauenswürdig eingestuft werden, da sie digital signiert sind. JWTs können mit einem Geheimnis (mit dem HMAC-Algorithmus) oder einem öffentlichen/privaten Schlüsselpaar unter Verwendung von RSA oder ECDSA signiert werden.
Die Struktur eines JWT
Ein JWT besteht technisch aus drei Teilen, die durch Punkte (.) getrennt sind:
- Header (Kopfzeile) : Der Header besteht typischerweise aus zwei Teilen: dem Token-Typ (JWT) und dem verwendeten Signaturalgorithmus, wie z. B. HMAC SHA256 oder RSA.
- Payload (Nutzdaten) : Die Payload enthält die Claims. Claims sind Aussagen über eine Entität (typischerweise den Benutzer) und zusätzliche Daten. Es gibt drei Arten von Claims: registrierte, öffentliche und private Claims.
- Signature (Signatur) : Um den Signaturteil zu erstellen, müssen Sie den codierten Header, die codierte Payload, ein Geheimnis und den im Header angegebenen Algorithmus nehmen und dies signieren. Die Signatur dient dazu, zu überprüfen, ob die Nachricht unterwegs nicht verändert wurde.
Unterstützte Algorithmen
Dieses Tool unterstützt die Decodierung und Überprüfung für alle Standardalgorithmen sowie die Generierung für symmetrische Algorithmen:
- HS256: HS256 (HMAC SHA-256): Symmetrisch. Erfordert einen gemeinsamen geheimen Schlüssel. Schnell und üblich für Microservices.
- HS384: HS384 (HMAC SHA-384): Symmetrisch. Nutzt einen 384-Bit-Hash für höhere Kollisionsresistenz.
- HS512: HS512 (HMAC SHA-512): Symmetrisch. Nutzt einen 512-Bit-Hash. Am sichersten für symmetrische Signaturen.
- RS256: RS256 (RSA SHA-256): Asymmetrisch. Private Key zum Signieren, Public Key zum Verifizieren. Ideal für öffentliche APIs.
- RS384: RS384: Asymmetrisch. Stärkerer Hash als RS256.
- RS512: RS512: Asymmetrisch. Höchste Sicherheit für RSA-Signaturen.
JWT Claims verstehen
Claims sind Informationsstücke, die über ein Subjekt ausgesagt werden. Standardmäßige registrierte Claims sind:
- iss (Issuer): iss (Issuer): Identifiziert den Aussteller des JWT.
- sub (Subject): sub (Subject): Identifiziert das Subjekt des JWT (z. B. User-ID).
- aud (Audience): aud (Audience): Identifiziert die Empfänger, für die das JWT bestimmt ist.
- exp (Expiration Time): exp (Expiration Time): Identifiziert den Ablaufzeitpunkt, ab dem das JWT nicht mehr akzeptiert werden darf.
- nbf (Not Before): nbf (Not Before): Identifiziert den Zeitpunkt, vor dem das JWT nicht akzeptiert werden darf.
- iat (Issued At): iat (Issued At): Identifiziert den Zeitpunkt, zu dem das JWT ausgestellt wurde.
- jti (JWT ID): jti (JWT ID): Bietet eine eindeutige Kennung für das JWT.
Wann sollten Sie JWT verwenden?
- Autorisierung: Dies ist das häufigste Szenario. Sobald der Benutzer angemeldet ist, enthält jede nachfolgende Anfrage das JWT, sodass der Benutzer auf Routen, Dienste und Ressourcen zugreifen kann, die mit diesem Token zulässig sind.
- Informationsaustausch: JWTs sind ein guter Weg, um Informationen sicher zwischen Parteien zu übertragen. Da JWTs signiert werden können, können Sie sicher sein, dass die Absender die sind, für die sie sich ausgeben.
- Zustandslose Sitzungen: Im Gegensatz zu serverseitigen Sessions enthalten JWTs alle notwendigen Benutzerdaten, was Datenbankabfragen reduziert.
- Cross-Domain SSO: Da JWTs zustandslos und kompakt sind, können sie für Single Sign-On leicht über Domänen hinweg übertragen werden.
- API-Sicherheit: Absicherung von RESTful APIs ohne serverseitigen Session-Status.
Wichtige Sicherheits-Best-Practices: 1. Legen Sie keine sensiblen Daten (wie Passwörter) in die Payload; sie ist für jeden lesbar (Base64-decodiert). 2. Überprüfen Sie immer die Signatur. 3. Verwenden Sie 'exp' (Ablauf), um die Lebensdauer von Token zu begrenzen. 4. Verwenden Sie HTTPS, um das Abfangen von Token zu verhindern. 5. Speichern Sie Token sicher (HttpOnly-Cookies werden gegenüber LocalStorage empfohlen, um XSS-Angriffe zu verhindern).
Referenzen
Häufig gestellte Fragen (FAQ)
Ist JWT Verschlüsselung oder Codierung?
Standard-JWTs sind codiert und signiert, NICHT verschlüsselt. Die Daten in der Payload sind Base64Url-codiert, was bedeutet, dass jeder sie decodieren und lesen kann. Die Signatur stellt sicher, dass die Daten nicht manipuliert wurden, verbirgt sie aber nicht. Um Daten zu verbergen, benötigen Sie JWE (JSON Web Encryption).
Wo soll ich JWTs auf dem Client speichern?
Für Webanwendungen gilt das Speichern von JWTs in `HttpOnly`-Cookies allgemein als sicherer als in `localStorage`, da Cookies immun gegen Cross-Site-Scripting (XSS)-Angriffe sind. Cookies sind jedoch anfällig für CSRF, was separat abgesichert werden muss.
Was passiert, wenn ein JWT gestohlen wird?
Wenn ein JWT gestohlen wird, kann sich der Dieb als der Benutzer ausgeben, bis das Token abläuft. Deshalb ist es wichtig, kurze Ablaufzeiten (`exp`) zu verwenden und Token-Widerrufsstrategien (wie Blacklisting von jti) oder Refresh-Token mit Rotation zu implementieren.
Sendet dieses Tool meine Schlüssel an den Server?
Nein. Dieses Tool läuft vollständig auf der Client-Seite. Ihre privaten Schlüssel, geheimen Schlüssel und Token-Daten verlassen niemals Ihren Browser. Alle kryptografischen Operationen werden lokal mit JavaScript-Bibliotheken durchgeführt.
Kann ich die Payload manuell ändern?
Sie können den Payload-Teil lokal ändern, aber wenn Sie dies tun, wird die Signatur basierend auf dem ursprünglichen Schlüssel ungültig. Der Server wird das Token ablehnen, es sei denn, Sie signieren es mit dem korrekten Geheimnis/Privatschlüssel neu.
Was ist der Unterschied zwischen HS256 und RS256?
HS256 ist ein symmetrischer Algorithmus (verwendet ein gemeinsames Geheimnis zum Signieren und Verifizieren). RS256 ist asymmetrisch (verwendet einen Privatschlüssel zum Signieren und einen öffentlichen Schlüssel zum Verifizieren). RS256 ist besser für verteilte Systeme geeignet.
Verwandte Tools
Base64-Kodierer/Dekodierer
Schnelles Kodieren und Dekodieren von Base64-Strings mit Unterstützung für Text- und Dateikonvertierung
HMAC-Generator
Generieren Sie HMAC-Authentifizierungscodes mit MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3 und RIPEMD-160 Algorithmen
Datumsrechner
Berechnen Sie Tage zwischen Daten, addieren/subtrahieren Sie Tage, berechnen Sie Alter und zählen Sie Arbeitstage
JSON-Formatierer
Formatieren und validieren Sie JSON-Daten für verbesserte Lesbarkeit und Debugging
SHA-Hash-Generator
Online SHA-Hash-Generator mit Unterstützung für SHA-1, SHA-256, SHA-384, SHA-512 Algorithmen
RSA-Verschlüsselung/Entschlüsselung
Verwenden Sie RSA-asymmetrische Verschlüsselung für öffentliche Schlüsselverschlüsselung, private Schlüsselentschlüsselung, digitales Signieren und Verifizierung