Für mein Projekt implementiere ich OAuth2-Authentifizierungs-Framework, das Bearer-Tokens verwendet.JWT-Zugriffstoken Sicherheitsüberlegungen
Von einer schnellen Suche, es sieht aus wie JWT Tokens sind die Mainstream-Wahl für Bearer Tokens heute.
Wenn ich ein "dummes" Token verwenden würde, das keine Informationen codiert, würde ich dieses Token in einer Datenbank zusammen mit allen zugehörigen Parametern (Token-Benutzer, Ausstellungsdatum, Ablaufdatum usw.) speichern.
Von JWT Dokumentation verstand ich, dass ich durch die Umsetzung dieser Strömung diesen Aufwand vermeiden kann:
- Benutzer authentifiziert mit einem der unterstützten Methoden
- Authentifizierungsdienst JWT Token und codiert die folgenden Parameter in sie erzeugt: Benutzer-ID, verwendete Authentifizierungsmethode, Ausgabedatum, Ablaufdatum
- Authentifizierungsdienst verschlüsselt und signiert das Token
- Das Token wird an den Benutzer zur anschließenden Verwendung gesendet
Der Verschlüsselungsschritt ist wünschenswert, da ich keine Benutzerkennungen anzeigen möchte.
Mein Verständnis ist, dass, wenn ich die obige Methode verwenden, ich vermeiden kann, die Zuordnung zwischen Zugriffstoken und Benutzern zu speichern, und verlassen Sie sich vollständig auf die Benutzer-ID-Informationen mit dem Token bereitgestellt.
Was mich mit diesem Ansatz stört, ist, dass es aussieht, als hätte ich keine Möglichkeit, Zugriffstoken zu "widerrufen".
Mit anderen Worten - selbst wenn das Zugriffstoken kompromittiert wird, kann ich es nicht deaktivieren (es sei denn, ich kenne das genaue kompromittierte Token, was nicht der Fall ist).
Ist das ein echtes Problem, oder fehlt mir gerade etwas? Wenn diese Sorge real ist, wie kann ich das umgehen?
Sie haben recht, ein JWT ist bis zum Ablauf gültig und Sie sollten es nicht speichern. Sie können eine Sperrliste erstellen, aber das Übliche ist, das Token ablaufen zu lassen und die Ablauffrist an Ihre Bedürfnisse anzupassen. Siehe https://stackoverflow.com/questions/37507714/invalidating-client-side-jwt-session – pedrofb