Ein JWT ist ein signiertes Datenpaket, das Angaben über einen Anmeldevorgang transportiert. Die Abkürzung steht für JSON Web Token und wird „dschott“ ausgesprochen.
- JWT
Ein signiertes Datenpaket, das Angaben über einen Anmeldevorgang transportiert.
Beispiel: „Der Dienst prüft das JWT und weiß daraus, wer anfragt und wie lange noch.“Auch: JSON Web Token. Das zugehörige Verfahren zum Signieren heißt JWS, die verschlüsselte Variante JWE.
Abgrenzung zum Sitzungsschlüssel: Ein klassischer Sitzungsschlüssel ist eine Nummer, zu der der Server seine Daten nachschlägt. Ein JWT trägt die Daten selbst.
Woraus ein JWT besteht
Aus drei Teilen, die mit Punkten getrennt sind: Kopf, Nutzlast und Signatur. Der Kopf nennt das Signaturverfahren, die Nutzlast enthält die Angaben zur Anmeldung, und die Signatur bestätigt, dass beide Teile unverändert sind. Alle drei sind lediglich kodiert, damit sie in eine Adresse oder einen Kopfzeilenwert passen.
Warum ein JWT nicht verschlüsselt ist
Weil Kodierung keine Verschlüsselung ist. Wer ein JWT in eines der vielen Prüfwerkzeuge einfügt, liest die Nutzlast im Klartext; dafür genügt der Browser. Die Signatur schützt vor Veränderung, nicht vor dem Mitlesen. In die Nutzlast gehören deshalb nur Angaben, die der Inhaber ohnehin kennen darf: eine Kennung, eine Rolle, ein Ablaufzeitpunkt. Keine Adressen, keine Geburtsdaten, keine Berechtigungen, die als Geheimnis gedacht sind.
Die Fehler, die bei der Prüfung immer wieder vorkommen
Drei, und alle drei stehen seit Jahren in denselben Berichten. Der erste ist das Vertrauen in das Feld, das das Verfahren nennt: Wer das Verfahren aus dem Token liest, statt es vorzugeben, nimmt irgendwann ein Token an, das gar nicht signiert ist. Der zweite ist die fehlende Prüfung des Ablaufzeitpunkts. Der dritte ist die fehlende Prüfung des Empfängers, wodurch ein Token für Dienst A bei Dienst B funktioniert.
Wann ein JWT die falsche Wahl ist
Immer dann, wenn ein Zugang sofort entzogen werden muss. Ein signiertes Token gilt bis zu seinem Ablauf, und der Dienst, der es prüft, fragt dafür niemanden; genau das macht es schnell. Wer einen Nutzer sperren will, muss deshalb entweder kurze Laufzeiten wählen oder doch eine Liste führen, was den Vorteil wieder aufhebt. Für Sitzungen im Browser ist der klassische Sitzungsschlüssel oft die ehrlichere Lösung.