Hallo zusammen
Ich schreibe aktuell an einer Applikation welche auf Spring Boot basiert. Später sollten andere Technologien (HTML, android, iOS,...) mit dieser Applikation kommunizieren können. Diese Applikation kann nur verwendet werden wenn man angemeldet ist.
Aktuell: Bei der Registrierung wird alles dahinter in eine DB abgelegt.
Da diese Applikation stateless ist, will ich das jedesmal überprüft wird, ob der Benutzer eingeloggt ist und dies ohne irgendwelche Sessions.
Nun habe ich mir folgendes gedacht:
Ich setze eine zweite Applikation um und beim einloggen wird ein Token generiert welches dann irgendwo abgespeichert wird. Dieses Token kriegt der Benutzer zurück. Anhand diesen Tokens sollte überprüft werden ob der Benutzer eingeloggt ist bzw. existiert dieses Token.
Einfach gesagt, bei jedem Request auf diesen Server wird halt noch ein Token mitgegegen. Dieses Token wird dann an die zweite Applikation übergeben zum überprüfen ob er angemeldet ist oder nicht (sprich, true oder false).
Meine Frage ist nun:
Wie sollte ich das am besten machen? Wäre dieser Ansatz gut welcher ich vor habe? Verbesserungsvorschläge? oder kann ich das so machen ohne später Probleme zu kriegen?
Zweite Frage:
Wo sollte ich das Token ablegen?
Sonst noch verschläge?
Ich schreibe aktuell an einer Applikation welche auf Spring Boot basiert. Später sollten andere Technologien (HTML, android, iOS,...) mit dieser Applikation kommunizieren können. Diese Applikation kann nur verwendet werden wenn man angemeldet ist.
Aktuell: Bei der Registrierung wird alles dahinter in eine DB abgelegt.
Da diese Applikation stateless ist, will ich das jedesmal überprüft wird, ob der Benutzer eingeloggt ist und dies ohne irgendwelche Sessions.
Nun habe ich mir folgendes gedacht:
Ich setze eine zweite Applikation um und beim einloggen wird ein Token generiert welches dann irgendwo abgespeichert wird. Dieses Token kriegt der Benutzer zurück. Anhand diesen Tokens sollte überprüft werden ob der Benutzer eingeloggt ist bzw. existiert dieses Token.
Einfach gesagt, bei jedem Request auf diesen Server wird halt noch ein Token mitgegegen. Dieses Token wird dann an die zweite Applikation übergeben zum überprüfen ob er angemeldet ist oder nicht (sprich, true oder false).
Meine Frage ist nun:
Wie sollte ich das am besten machen? Wäre dieser Ansatz gut welcher ich vor habe? Verbesserungsvorschläge? oder kann ich das so machen ohne später Probleme zu kriegen?
Zweite Frage:
Wo sollte ich das Token ablegen?
- Wenn ich es in ein Array hinterlege, wird es bei einen Benutzerzahl von 1000+ ein ziemlich grosses Array und RAM wird extrem belastet. Der zweite nachteil ist, wenn der Server abstürzt, müssen sich die Benutzer erneut anmeldet damit ein Token wieder generiert wird.
- Sollte ich es in ein File ablegen? Da weiss ich nicht, wie schnell das File gelesen werden kann bzw. hineingeschrieben werden kann. Da pro Request und pro User, das Token aus dem File gelesen werden muss. Somit wäre der Ansatz mit einem Array oder mit eine Map schneller. Wie funktioniert das, beim schreiben in eine Datei mit 1000+ bereits eingetragenen Tokens? funktioniert das gleich schnell? Was passiert wenn sich 100 User zur selben Zeit anmelden?
- Sollte ich eine Datenbank nehmen, bzw. die Daten in eine DB ablegen? Vorteil ist, das man das spiegeln kann und das es schnell ist. Aber Nachteil ist, ich bräuchte einen Server mehr.
Sonst noch verschläge?