c't 16/2019
S. 118
Hintergrund
JSON Web Token
Aufmacherbild
Bild: Albert Hulm

Drum prüfe, wer sich bindet

Web-Authentifizierung mit JSON Web Tokens statt Sessions

Der Benutzer gibt Benutzernamen und Passwort ein, klickt auf den Login-Button und ist angemeldet. Damit eine solche Anmeldung im Web erhalten bleibt, muss der Entwickler einen Mechanismus zur Wiedererkennung einer Sitzung einbauen. Nachdem sogenannte Sessions lange das Mittel der Wahl waren, wird heute vermehrt mit JSON Web Tokens gearbeitet. Interessant sind sie vor allem für verteilte Anwendungen.

Die Authentifizierung innerhalb von HTTP-Webanwendungen lösen Entwickler traditionell mit Sessions: Ein Benutzer meldet sich mit seinen Anmeldedaten an; stimmen diese mit Werten aus der Benutzerdatenbank überein, legt der Server eine Session mit Daten über den Benutzer an – einen Datensatz mit Informationen zur Benutzersitzung. Den Datensatz speichert der Server zum Beispiel auf seiner Festplatte – in vielen Implementierungen als einfache Textdatei. Der Datensatz wird mit einer Session-ID verknüpft, eine zufällige und lange Zeichenkette. Diese ID bekommt der Client nach der Anmeldung als Cookie gesendet. Er speichert diese und sendet sie bei zukünftigen Anfragen an den Server quasi als Ausweis mit.

So schafft man es, über das zustandslose Protokoll HTTP eine nicht-zustandslose Verbindung zwischen Client und Server herzustellen. Wenn der Client nun eine weitere Anfrage an den Server sendet, hängt er die Session-ID an. Dieses Verfahren hat lange gut funktioniert, stößt aber in modernen Webanwendungen, die auf viele Server verteilt sind, an seine (Performance-)Grenzen.