CoderTools

JWT Encoder/Decoder

JWT-Tokens sicher entschlüsseln, verifizieren und generieren

Entschlüsseltes JWT

Header


                        

Payload


                        

Signatur


                        

Was ist JWT?

JSON Web Token (JWT)

JWT (JSON Web Token) 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 verifiziert und vertraut werden, da sie digital signiert sind. JWTs können mit einem geheimen Schlüssel (mit dem HMAC-Algorithmus) oder einem öffentlichen/privaten Schlüsselpaar mittels RSA oder ECDSA signiert werden.

JWT-Struktur

Ein JWT besteht aus drei Teilen, die durch Punkte (.) getrennt sind:

xxxxx.yyyyy.zzzzz
  • Header : Enthält den Token-Typ (JWT) und den Signaturalgorithmus (z.B. HS256, RS256)
  • Payload : Enthält die Claims - Aussagen über eine Entität (normalerweise den Benutzer) und zusätzliche Daten
  • Signatur : Wird verwendet, um zu verifizieren, dass der Absender des JWT wirklich der ist, der er vorgibt zu sein, und um sicherzustellen, dass die Nachricht unterwegs nicht verändert wurde

Signaturalgorithmen

JWT unterstützt verschiedene Signaturalgorithmen:

  • HS256: HMAC mit SHA-256. Symmetrischer Algorithmus mit gemeinsamem geheimen Schlüssel
  • HS384: HMAC mit SHA-384. Symmetrischer Algorithmus mit stärkerem Hash
  • HS512: HMAC mit SHA-512. Symmetrischer Algorithmus mit stärkstem Hash
  • RS256: RSA-Signatur mit SHA-256. Asymmetrischer Algorithmus mit öffentlichem/privatem Schlüsselpaar
  • RS384: RSA-Signatur mit SHA-384. Asymmetrischer Algorithmus mit stärkerem Hash
  • RS512: RSA-Signatur mit SHA-512. Asymmetrischer Algorithmus mit stärkstem Hash

Standard-Claims

JWT definiert mehrere Standard-Claims (registrierte Claim-Namen), die nützliche Informationen bereitstellen:

  • iss (Issuer): Token-Aussteller
  • sub (Subject): Subjekt des Tokens (Benutzer-ID)
  • aud (Audience): Beabsichtigte Zielgruppe
  • exp (Expiration Time): Ablaufzeit (Unix-Zeitstempel)
  • nbf (Not Before): Nicht gültig vor dieser Zeit
  • iat (Issued At): Ausstellungszeit
  • jti (JWT ID): Eindeutiger Bezeichner für das Token

Häufige Anwendungsfälle

  • Authentifizierung: Nach der Benutzeranmeldung enthält jede nachfolgende Anfrage das JWT, das Zugriff auf Routen, Dienste und Ressourcen ermöglicht
  • Informationsaustausch: Sichere Übertragung von Informationen zwischen Parteien mit Signaturverifizierung
  • Single Sign-On (SSO): Weit verbreitet für SSO-Funktionen aufgrund des geringen Overheads und der domänenübergreifenden Fähigkeit
  • API-Autorisierung: Zustandslose Authentifizierung für RESTful-APIs
  • OAuth 2.0 und OpenID Connect: Kernkomponente moderner Authentifizierungsprotokolle

Sicherheitshinweis: JWT-Tokens sind signiert, um die Authentizität zu verifizieren, aber standardmäßig nicht verschlüsselt. Speichern Sie keine sensiblen Informationen im Payload, es sei denn, sie sind separat verschlüsselt. Verwenden Sie immer HTTPS zur Übertragung von Tokens. Speichern Sie Tokens sicher (z.B. httpOnly-Cookies für Webanwendungen). Implementieren Sie geeignete Token-Ablauf- und Aktualisierungsmechanismen. Geben Sie Ihren geheimen Schlüssel niemals im clientseitigen Code preis.

Referenzen