2017-07-26 1 views
1

Ich erstelle meine erste SPA mit NodeJS-Stack für die Entwicklung und ich kam zu einem Punkt, wo ich die Authentifizierung gestalten und einige Teile der App sichern sollte.
Ich lese viel über Auth-Techniken einschließlich JWT, OAuth, etc., aber ich habe immer noch nicht so etwas wie «ein reales Beispiel» gefunden.
Nehmen wir an, dass meine Aufgabe nur darin besteht, einige Teile der App von der Öffentlichkeit zu sichern. Meine App ist nicht für die Zusammenarbeit mit Drittanbieterdiensten ausgelegt, sodass ich keine Notwendigkeit sehe, etwas wie Google oder Facebook zu verwenden. Ich möchte Login/Passwort verwenden und alle diese Daten mit meinem eigenen Datenbankserver speichern.
Ich verstehe nicht den Punkt der Authentifizierung stateless. Ich kam zu einer einfachen Schlussfolgerung, dass ich Authentifizierung auf diese Weise entwerfen kann:Kann ich nur Auth-Token erstellen und speichern, anstatt JWT und ähnliches zu verwenden?

  • Ich speichern Benutzer Logins und Passwörter in meiner Datenbank.
  • Benutzerauthentifizierung bedeutet, dass der Benutzer seine Anmeldeinformationen eingibt, der Server prüft sie und erstellt Token. Dann speichert der Server dieses Token in der Datenbank. Der Benutzer speichert das Token über den lokalen Browserspeicher oder irgendwo anders, wenn es sich nicht um eine Browserumgebung handelt.
  • Auf jeder Anfrage Client sendet dieses Token, überprüfen Server, dass diese Token vorhanden ist und entsprechend reagiert.
  • Benutzer kann sich von verschiedenen Geräten anmelden, wir erstellen nur mehrere Tokens für ihn.
  • Wir können bestimmte Sitzungen oder alle Sitzungen beenden, indem Sie einfach Benutzer-Token aus der Datenbank löschen.
  • Wir können Token in einer Art und Weise verwalten wir wollen, zum Beispiel Server-Ablaufzeit überprüfen und ungültig machen (löschen) Token.

Ist es OK? JWT erfordern zusätzliche Implementierung, wenn wir Token ungültig machen müssen, sah ich verschiedene Beispiele, alle von ihnen waren auf der Speicherung ungültige Token basiert, aber was ist der Sinn davon, wenn wir nur gültige Token speichern können? Wir verlieren bereits Staatenlosigkeit durch die Implementierung dieses Speichers.
Ich sehe, dass ich einfach Cookies anstelle der oben beschriebenen Implementierung verwenden kann, aber ich mag keine Idee, Cookies in RESTful App zu verwenden, weil es wirklich auf Browser-ähnliche Client-Umgebung abhängt.
Was sind die Nachteile, wenn Tokens nur auf dem Server gespeichert werden?

Antwort

0

Ich habe ein Projekt, in dem die Benutzerauthentifizierung implementiert erforderlich ist und Token wird in der Datenbank gespeichert.

können Sie das Beispiel here finden.

0

Sie den traditionellen Authentifizierungs Ansatz mit Hilfe von Cookies Sitzung beschreiben. Der Server speichert eine Sitzung für jeden verbundenen Benutzer, der durch eine sessionid identifiziert wird. Die sessionid wird vom Client in einem Cookie gespeichert und in jeder folgenden Anfrage zur Identifizierung des Benutzers gesendet.

Sie diese Methode perfekt nutzen können, sowohl in Browsern oder mobilen Geräten (die Gerätespeicher anstelle eines Cookies verwenden)

Der Nachteil ist, dass es viele Server-Ressourcen erfordert Sitzungen offen zu halten und erfordert Datenbankabfragen an jede Authentifizierung zum Abrufen von Benutzerdaten. Das löst JWT. Die Benutzerinformationen werden im Token selbst gespeichert und sind zuverlässig, da sie mit dem geheimen Schlüssel des Servers signiert sind.

JWT hat seine eigenen Nachteile, zum Beispiel ist es nicht nützlich, wenn Sie eine Sperrliste haben müssen, weil sie Serverspeicher benötigen.

Verwandte Themen