<EbeneX/>
Architektur Sicherheit · Updated 1. Juli 2026

JWT (JSON Web Token)

Definition

Ein kompakter, URL-sicherer Token-Standard für die signierte Übertragung von Informationen zwischen Parteien – häufig genutzt für API-Authentifizierung.

Fortgeschritten 3 Min. Lesezeit EN: JSON Web Token (JWT)

Einfach erklärt

Ein JWT (JSON Web Token) ist ein signierter Token, der Informationen enthält und bei API-Requests zur Authentifizierung oder Autorisierung mitgesendet werden kann. Der Server kann den Token oft prüfen, ohne eine klassische Session-Datenbank abzufragen.

Der Ablauf:

1. Login
   User → [email + password] → Server
   Server → [JWT] → User

2. API-Requests
   User → [Request + JWT im Header] → Server
   Server prüft JWT-Signatur
   Server → [Response] → User

JWT-Struktur:

base64url(header).
base64url(payload).
base64url(signature)

Header.Payload.Signature
TeilInhaltBeispiel
HeaderAlgorithmus, Typ{"alg": "HS256", "typ": "JWT"}
PayloadClaims (Daten){"sub": "user-id", "exp": expiry_timestamp}
SignatureSignaturHMAC-SHA256(header + payload, secret)

Technischer Deep Dive

JWT erstellen

Node.js Beispiel:

const jwt = require('jsonwebtoken');

const token = jwt.sign(
  {
    sub: userId,
    role: userRole,
    iat: Math.floor(Date.now() / 1000),
    exp: Math.floor(Date.now() / 1000) + accessTokenLifetime
  },
  process.env.JWT_SECRET,
  { algorithm: 'HS256' }
);

JWT verifizieren

try {
  const decoded = jwt.verify(token, process.env.JWT_SECRET);
  console.log(decoded);
  // { sub: userId, role: userRole, ... }
} catch (err) {
  if (err.name === 'TokenExpiredError') {
    // Token abgelaufen
  } else if (err.name === 'JsonWebTokenError') {
    // Ungültige Signatur
  }
}

Standard Claims

ClaimNameBeschreibung
issIssuerWer hat den Token ausgestellt?
subSubjectFür wen ist der Token? (User ID)
audAudienceFür welchen Service?
expExpirationWann läuft er ab?
iatIssued AtWann wurde er ausgestellt?
nbfNot BeforeAb wann gültig?
jtiJWT IDEindeutige Token-ID

Access + Refresh Token Pattern

Login:
Server → kurzlebiges Access Token + länger geschütztes Refresh Token

API-Request:
Client → Access Token → Server

      Abgelaufen?

Client → Refresh Token → Server
Server → Neuer Access Token → Client

Warum zwei Tokens?

  • Access Token: Kurz, oft verwendet, bei Leak begrenzt Schaden
  • Refresh Token: Lang, selten verwendet, sicher gespeichert

Sicherheits-Best-Practices

Do:

  • TLS für Transportverschlüsselung verwenden
  • starke Schlüssel und sichere Key-Verwaltung nutzen
  • Laufzeiten risikobasiert begrenzen
  • Algorithmus explizit prüfen
  • Audience und Issuer validieren

Don’t:

  • sensible Daten im Payload vermeiden
  • none-Algorithmus oder unerwartete Algorithmen nicht akzeptieren
  • Speicherort im Client gegen XSS/CSRF-Risiken abwägen
  • überlange Laufzeiten vermeiden
  • schwache oder hardcodierte Secrets vermeiden

JWT vs. Session

AspektJWTSession
SpeicherortClientServer
Skalierungoft einfacher stateless möglichbenötigt Session Store oder Replikation
Invalidierungohne Zusatzmechanismen schwierigerzentral oft einfacher
Größegrößer, weil Claims enthalten sein könnenklein, meist nur ID
Microserviceshäufig gut nutzbarabhängig von Session-Architektur

Algorithmen

AlgorithmusTypEmpfehlung
HS256Symmetric (HMAC)passend bei sicher geteilter Secret-Verwaltung
RS256Asymmetric (RSA)häufig bei verteilter Verifikation
ES256Asymmetric (ECDSA)kompaktere Signaturen möglich
nonekeine Signaturin produktiven Auth-Flows nicht akzeptieren

Ein JWT ist wie ein Konzertticket mit Hologramm: Es enthält deine Infos (Name, Sitzplatz), ist fälschungssicher (Signatur), und der Türsteher kann es prüfen, ohne die Ticketdatenbank zu fragen.

Selbstbeschreibend: Enthält relevante Claims im Token selbst

Signiert: Manipulation kann bei korrekter Prüfung erkannt werden

Stateless möglich: Server muss nicht zwingend klassische Sessions speichern

API-Authentifizierung

User loggt ein, erhält JWT, sendet es bei jedem Request

Single Sign-On (SSO)

Ein Login für mehrere Anwendungen

Microservices

Service-zu-Service-Authentifizierung ohne zentrale Session

Mobile Apps

Stateless Auth kann für mobile Clients nützlich sein

Ist JWT sicher?

JWTs können sicher sein, wenn sie korrekt implementiert werden: starke Schlüssel, passende Laufzeiten, TLS, Algorithmusprüfung und keine sensiblen Daten im Payload. Häufige Fehler sind schwache Secrets, falsche Algorithmusprüfung oder fehlende Expiration.

Was ist der Unterschied zwischen JWT und Session?

Session: Server speichert Zustand, Client hat meist nur eine Session-ID. JWT: Client trägt Claims im Token, und der Server kann stateless prüfen. JWTs können Skalierung vereinfachen, Sessions sind oft leichter zentral zu invalidieren.

Wie lang sollte ein JWT gültig sein?

Die Laufzeit hängt von Risiko, Client-Typ und Architektur ab. Häufig werden kurze Access Tokens mit länger lebenden, stärker geschützten Refresh Tokens kombiniert.

Kann ich JWTs invalidieren?

Bei vollständig stateless JWTs nicht ohne zusätzliche Mechanismen. Optionen sind kurze Laufzeiten, Revocation-Listen, Token-Versionen, Rotation oder introspektionsbasierte Ansätze.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.