JWT

Aktualisiert: 29. September 2023

Einführung in JWT

JSON Web Token (JWT) ist ein kompaktes, URL-sicheres Mittel zur Darstellung von Ansprüchen, das zwischen zwei Parteien ausgetauscht werden kann. JWT ist ein offener Standard (RFC 7519), der definiert, wie Informationen sicher und mit Authentifizierung zwischen Parteien übertragen werden können. Ein JWT besteht eigentlich aus drei durch Punkte getrennten Strings, die zusammen die Struktur eines JWT erzeugen.

Hauptbestandteile von JWT

Header

Der Header besteht normalerweise aus zwei Teilen: dem Typ des Tokens, der JWT ist, und dem verwendeten Signaturalgorithmus, wie HMAC SHA256 oder RSA. Dieser wird Base64Url kodiert, um den ersten Teil des JWT zu bilden.

Ansprüche (Claims)

Die Ansprüche enthalten Aussagen über eine Entität (typischerweise den Benutzer) und zusätzliche Metadaten. Es gibt drei Arten von Ansprüchen: registriert, öffentlich und privat. Dieser Abschnitt ist ebenfalls Base64Url kodiert.

Signatur

Um eine JWT-Signatur zu erstellen, nimmt man den kodierten Header, den kodierten Anspruch, einen Geheimschlüssel, den Algorithmus, der im Header angegeben ist und signiert diesen. Die Signatur dient zur Überprüfung, dass der Sender der Nachricht ist, wer er vorgibt zu sein, und um sicherzustellen, dass die Nachricht nicht unterwegs geändert wurde.

Anwendung und Beispiele

In der Anwendungsentwicklung werden JWTs häufig zur Authentifizierung und Informationsaustausch zwischen Client und Server verwendet. Wenn ein Benutzer zum Beispiel seine Anmeldeinformationen an den Server sendet, prüft der Server, ob die Anmeldeinformationen validiert werden können, erstellt ein JWT und sendet es an den Client zurück. Der Client behält dieses Token und bei jedem nachfolgenden Request wird das Token mitgesendet. So kann der Server die Identität des Benutzers verifizieren, ohne dass der Benutzer erneut Anmeldeinformationen eingeben muss.

Abschlussgedanken

Die JSON Web Tokens bieten eine leichte und sichere Methode, um Daten und Informationen zwischen zwei Parteien zu übertragen. Sie sind besonders nützlich in verteilten Systemen oder in Szenarios, wo Sessiondaten nicht auf dem Server gespeichert werden können. Trotzdem sollte die Wichtigkeit einer sicheren Übertragung und Speicherung von JWTs nicht übersehen werden.

FAQ

Was ist ein JSON Web Token (JWT)?

Ein JWT ist eine Informationseinheit, die sicher zwischen zwei Parteien übertragen wird. Es kann verwendet werden, um die Identität eines Benutzers nachzuweisen, Daten auszutauschen oder Informationen über den Benutzer zu speichern.

Wofür stehen die Abkürzungen JWT, JSON und RFC?

JWT steht für JSON Web Token, JSON für JavaScript Object Notation und RFC für Request for Comments, eine Art von Standards in der IT-Welt.

Was ist ein Geheimschlüssel bei JWT?

Ein Geheimschlüssel ist ein Code, der verwendet wird, um den JWT zu signieren und seine Integrität zu wahren.

Was ist Base64Url Kodierung?

Base64Url ist eine Variante der Base64-Kodierung, die URL-sicher ist. Sie ersetzt die “+”/”=” Zeichen mit “-” bzw. “_”, um sicherzustellen, dass die kodierten Daten in URLs verwendet werden können.

Was ist ein Anspruch (Claim) in einem JWT?

Ein Anspruch ist eine Aussage, die der Token über den Benutzer macht. Es kann Informationen über den Benutzernamen, die E-Mail-Adresse, die Rolle etc. enthalten.

Wie lange ist ein JWT gültig?

Die Gültigkeit eines JWT wird normalerweise durch das “exp” (expire) Feld im Anspruch bestimmt. Der Server kann das Token als ungültig erklären, wenn das aktuelle Datum und Uhrzeit das “exp” Datum und Uhrzeit überschreitet.

Was ist der Unterschied zwischen lokalem Speicher und Sitzungspeicher für JWTs?

Lokaler Speicher und Sitzungsspeicher sind beides Web-Speichermechanismen. Der Unterschied besteht darin, dass der Sitzungsspeicher die Daten löscht, wenn die Sitzung (d.h. das Browserfenster) geschlossen wird, während der lokale Speicher die Daten persistent hält, auch wenn der Browser geschlossen wird.

Was passiert, wenn ein JWT gestohlen wird?

Wenn ein JWT gestohlen wird, kann der Dieb die Identität des Benutzers annehmen. Er kann Anfragen an den Server senden und auf Daten zugreifen, als wäre er der Benutzer selbst. Daher ist es wichtig, JWTs sicher zu übertragen und zu speichern.

Was bedeutet “sub” in einem JWT?

“sub” steht für “subject”. Es repräsentiert die Identität des Subjekts, über den der Token Aussagen macht, normalerweise ist dies der Benutzer.

Was ist der Unterschied zwischen JWT und Sitzungscookies?

Sitzungscookies speichern Informationen auf dem Server und ein Identifikator auf dem Client, während JWTs die Informationen selbst auf dem Client speichern. Dies bedeutet, dass bei jedem Request mit einem JWT mehr Daten übertragen werden, da sie das Token selbst enthalten. Andererseits müssen bei Cookies Sitzungsdaten auf dem Server gespeichert und verwaltet werden.

Ähnliche Artikel

Autor