2017-07-27 7 views
0

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:

  1. Benutzer authentifiziert mit einem der unterstützten Methoden
  2. Authentifizierungsdienst JWT Token und codiert die folgenden Parameter in sie erzeugt: Benutzer-ID, verwendete Authentifizierungsmethode, Ausgabedatum, Ablaufdatum
  3. Authentifizierungsdienst verschlüsselt und signiert das Token
  4. 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?

+1

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

Antwort

1

Zugriffstoken sind unabhängig und gültig, solange die Ablaufzeit gültig ist. Es gibt keine Spezifikation um sie in der tatsächlichen Spezifikation zu entkräften. Abhängig von der Sicherheitsstufe, die Sie benötigen, können Sie die Gültigkeitsdauer der Token von weniger Minuten auf Stunden anpassen. Normalerweise wird die Validierungszeit für eine Stunde festgelegt.

Wenn Sie ein höheres Sicherheitsniveau benötigen, können Sie Referenztoken verwenden. Referenz-Token enthält keine Informationen, sie sind einfache Zeichenfolgen. Der Server (oder derjenige, der diese Token verbraucht) muss jedoch den Token-Anbieter kontaktieren, um die Referenztoken für den tatsächlichen Antwortinhalt auszutauschen. Aber diese Token können widerrufen werden, wenn sie kompromittiert werden.

Weitere Informationen und einige Vorschläge zur Behebung einiger Nachteile von Referenztoken (z. B. Rückkanalkommunikation/Extra-Round-Trip zu Token Provider) finden Sie unter link. Bitte lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben.

-Soma.

Verwandte Themen