Definition JSON Web Token | JWT Was ist JSON Web Token (JWT)?

Das JSON Web Token ist ein genormtes Access-Token, mit dem Kommunikationspartner JSON-Objekte sicher austauschen können. Diese Token werden häufig für Authentifizierungsaufgaben genutzt. Durch die sichere Übertragung von verifizierbaren Claims mit den Informationen einer Entität ist die Authentifizierung in zustandslosen Sessions möglich. Ein JSON Web Token besteht aus den drei Teilen Header, Payload und Signatur.

Anbieter zum Thema

Das JSON Web Token (JWT) hilft bei der sicheren Übertragung von JSON-Objekten, zum Beispiel für Authentifizierungsaufgaben zustandsloser Sessions.
Das JSON Web Token (JWT) hilft bei der sicheren Übertragung von JSON-Objekten, zum Beispiel für Authentifizierungsaufgaben zustandsloser Sessions.
(Bild: gemeinfrei / Pixabay )

Das JSON Web Token ist im RFC 7519 standardisiert. Es handelt sich um ein genormtes Access-Token, mit dem sich JSON-Objekte sicher zwischen Kommunikationspartnern austauschen lassen. Das Token überträgt sogenannte Claims, die die für Authentifizierungsaufgaben notwendigen Informationen einer Entität enthalten. JWT eignen sich für Authentifizierungsvorgänge zustandsloser Sessions und kommen im Webumfeld beispielsweise für SSO-Anwendungen (Single Sign-on) zum Einsatz.

Für den Anwender ist die Verwendung eines JSON Web Token in der Regel transparent. Nach einem erfolgreichen Anmeldevorgang erhält der User ein JWT, das anschließend für Authentifizierungsvorgänge nutzbar ist. Das Access Token wird beispielsweise im HTTP-Header oder in der URL übertragen. Der Server muss keine Sitzungen und ihre Zustände speichern. Das JSON Web Token bietet eine Alternative zu Session Cookies. Es besteht aus den drei Teilen Header, Payload und Signatur.

Aufbau des JSON Web Token

Ein JWT ist ein einfacher Zeichenstring. Die drei Teile eines JSON Web Token sind Header, Payload und Signatur, die mit einen Punkt getrennt und mit Base64 kodiert sind. Ein Token lässt sich in dieser Form darstellen:

Header.Payload.Signatur

Im Header ist beschrieben, um welchen JWT-Typ es sich handelt und welche Signatur- und/oder Verschlüsselungsmethoden zum Einsatz kommen. Im Payload befinden sich die zu übermittelnden Informationen. Das JSON-Element Payload enthält eine beliebige Anzahl an Key-/Value-Paaren, die auch als Claims bezeichnet werden. Grundsätzlich findet eine Unterscheidung zwischen privaten, öffentlichen und registrierten Claims statt. Den Abschluss eines JWT bildet die Signatur, deren Aufbau im RFC 7515 definiert ist. Die Signatur wird erstellt, indem auf die mit Base64 kodierten Token-Bestandteile Header und Payload die vorgegebene Signatur- beziehungsweise Verschlüsselungsmethode angewandt wird. Durch das Signieren und/oder Verschlüsseln von Payload und Header lassen sich die Authentizität, Vertraulichkeit und Integrität des Token sicherstellen. Der Header gibt vor, welche Signatur- und/oder Verschlüsselungsmethoden zum Einsatz kommen. Möglich sind zum Beispiel:

  • keine Sicherung (keine Signatur)
  • nur Signatur (keine Verschlüsselung)
  • Signatur und Verschlüsselung (Claims sind mit JWE (JSON Web Encryption) verschlüsselt)

Funktionsweise der Nutzung des JSON Web Token

Um die Funktionsweise der Nutzung des JSON Web Token zu verdeutlichen, im Folgenden der vereinfachte Ablauf eines Authentifizierungsvorgangs einer zustandslosen Client-Server-Sitzung:

  • Zwischen Client und Server ist ein geheimer Schlüssel vereinbart.
  • Der Client meldet sich mit seinen Userdaten beim Server an.
  • Nach der erfolgreichen Anmeldung liefert der Server einen signierten und/oder verschlüsselten Claim mit der Entität des Clients aus.
  • Der Client sendet dieses Token bei jeder neuen Anfrage an den Server beispielsweise als Parameter im GET-Request.
  • Der Server gewährt dem Client nach erfolgreicher Prüfung des erhaltenen Token Zugriff auf die angefragte Ressource.

Um die Sicherheit zu erhöhen, lässt sich die Gültigkeit eines JSON Web Token durch ein Ablaufdatum zeitlich begrenzen. Nach dem Ablaufdatum darf der Token nicht mehr verarbeitet werden.

(ID:47986702)