đŸŽ«
← ZurĂŒck zu Anleitungen

JWT-Token-Struktur erklÀrt: Header, Payload und Signatur

· Tags: jwt-structure, jwt-header, jwt-payload, jwt-signature, json-web-token

JWT-Token-Struktur erklÀrt

Jedes JSON Web Token (JWT) ist eine kompakte, URL-sichere Zeichenkette, die Claims zwischen zwei Parteien ĂŒbertrĂ€gt. Das VerstĂ€ndnis seiner internen Struktur ist fĂŒr jeden Entwickler, der mit tokenbasierter Sicherheit arbeitet, unerlĂ€sslich.

Die drei Teile eines JWT

Ein JWT besteht aus drei durch Punkte (.) getrennten Teilen:

header.payload.signature

Beispiel:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Jeder Teil ist base64url-codiertes JSON. Ein JWT ist signiert, nicht verschlĂŒsselt – jeder kann es decodieren und seinen Inhalt lesen.

Teil 1: Der Header

Der Header enthĂ€lt Metadaten ĂŒber das Token – den Signaturalgorithmus und den Tokentyp.

| Feld | Beschreibung | Beispielwerte | |-------|-------------|----------------| | alg | Signaturalgorithmus (erforderlich) | HS256, RS256, ES256 | | typ | Tokentyp (optional) | JWT | | kid | SchlĂŒssel-ID (optional) | "key-1" |

{
  "alg": "HS256",
  "typ": "JWT"
}

Das Feld alg teilt dem Verifizierer mit, welcher Algorithmus die Signatur erstellt hat. Eine Algorithmus-Diskrepanz – oder die Akzeptanz von alg: "none" – ist eine hĂ€ufige JWT-Sicherheitsschwachstelle.

Teil 2: Die Payload

Die Payload enthĂ€lt Claims ĂŒber den Benutzer und Metadaten. Claims fallen in drei Kategorien:

Registrierte Claims

| Claim | VollstĂ€ndiger Name | Zweck | |-------|-----------|---------| | iss | Issuer | Wer das Token ausgestellt hat | | sub | Subject | Identifiziert den Benutzer | | aud | Audience | Beabsichtigter EmpfĂ€nger | | exp | Expiration | Zeitstempel des Token-Ablaufs | | nbf | Not Before | Token ist vor diesem Zeitpunkt nicht gĂŒltig | | iat | Issued At | Zeitstempel der Token-Erstellung | | jti | JWT ID | Eindeutige Token-Kennung |

Beispiel einer decodierten Payload

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022,
  "exp": 1516242622,
  "iss": "https://auth.example.com"
}

Öffentliche Claims sind in der IANA-Registry definiert oder verwenden kollisionsresistente URIs. Private Claims sind benutzerdefinierte Claims, die zwischen Aussteller und EmpfĂ€nger vereinbart werden.

Teil 3: Die Signatur

Die Signatur wird erstellt, indem der codierte Header, die codierte Payload und ein geheimer SchlĂŒssel mit dem Algorithmus aus dem Header kombiniert werden. Sie dient zwei Zwecken:

  1. IntegritĂ€t – bestĂ€tigt, dass das Token nach der Signierung nicht verĂ€ndert wurde.
  2. Authentifizierung – beweist, dass das Token von der erwarteten Partei signiert wurde.

Erstellung einer HS256-Signatur

HMACSHA256(
  base64urlEncode(header) + "." + base64urlEncode(payload),
  secret
)

Erstellung einer RS256-Signatur

RSASHA256(
  base64urlEncode(header) + "." + base64urlEncode(payload),
  privateKey
)

Base64url im Vergleich zu Standard-Base64

| Aspekt | Standard-Base64 | Base64url | |--------|-----------------|-----------| | Zeichen 62 | + | - | | Zeichen 63 | / | _ | | Padding | = | Weggelassen |

Diese Codierung stellt sicher, dass JWTs ohne Prozentcodierung sicher fĂŒr HTTP-Header, Abfrageparameter und URL-Pfade sind.

VollstÀndiger JWT-Erstellungsprozess

  1. Header-JSON erstellen und base64url-codieren.
  2. Payload-JSON erstellen und base64url-codieren.
  3. Mit einem .-Trennzeichen verketten.
  4. Mit dem gewĂ€hlten Algorithmus und dem geheimen SchlĂŒssel signieren.
  5. Die Signatur base64url-codieren.
  6. Alle drei Teile mit .-Trennzeichen verketten.

SicherheitsĂŒberlegungen

  • Speichern Sie niemals Geheimnisse in der Payload. Die Payload ist codiert, nicht verschlĂŒsselt.
  • Validieren Sie immer die Signatur. Ohne Verifizierung kann jeder Tokens fĂ€lschen.
  • PrĂŒfen Sie den alg-Header. Lehnen Sie alg: "none" und Versuche der Algorithmus-Herabstufung ab.
  • Legen Sie kurze Ablaufzeiten fest. Verwenden Sie exp-Claims in Minuten oder Stunden, nicht in Monaten.

Decodieren Sie ein JWT-Token online

Nutzen Sie das JWT-Decoder-Tool, um jedes Token zu untersuchen. FĂŒgen Sie es ein und sehen Sie sofort den decodierten Header, die Payload und den Signaturalgorithmus. Die gesamte Verarbeitung erfolgt in Ihrem Browser.

JWT-Token-Struktur erklÀrt: Header, Payload und Signatur - CoolTool