Wie sichere JWT-Token Zugangsdaten ab?

1 Antwort

Die tatsächliche Kommunikation mit der API kann serverseitig erfolgen. Das heißt, du schickst deine AJAX-Anfrage erst einmal an den eigenen Server (irgendeinen Handler / irgendein Skript). Dieser führt den Request an die API aus, bei dem auch die Credentials übermittelt werden. Das empfangene Ergebnis (der Token) kann wiederum in der Session gespeichert werden oder du gibst ihn in den Response Body, sodass du ihn in deinem JavaScript-Code auslesen kannst.

Im letzteren Fall müsstest du allerdings einige Sicherheitsmaßnahmen ergreifen, um den Token sicher zu verwahren. Der Session Storage oder ein Cookie wären naheliegend, allerdings bräuchte es noch einen Schutz vor XSS-Attacken.

Du könntest hierfür (serverseitig) einen gehashten Zufallsstring in den Token einbauen. Der ungehashte Wert dieses Strings wird in einem gesicherten Cookie gespeichert (d.h. Flags wie httpOnly, secure und SameSite=Strict sind gesetzt).

Für einen API-Request bedarf es dann einer Prüfung, ob der Zufallsstring als Hash im Token vorliegt. Wenn nicht, muss ein neuer Token angefordert werden.

Ein zusätzlicher Schutz wäre das Eingrenzen der CSP.