2017-04-18 3 views
0

Unser Projekt besteht aus Java Backend (Spring Web Application) und iOS und Android Client-Anwendungen. Jetzt müssen wir dem Java-Backend eine Authentifizierung für Client-Anwendungen hinzufügen. Die Idee besteht darin, den Benutzer zum ersten Mal über einen externen Webservice zu registrieren. Bei diesem Schritt stellt der Benutzer die vollständigen Zugangsdaten (Login und "großes" Passwort) zur Verfügung und wählt eine PIN zur weiteren Autorisierung. Nachdem dieser primäre Schritt erfolgreich abgeschlossen wurde, sollte der Benutzer in der Lage sein, sich mit seinem Login und der PIN (die er zuvor selbst gewählt hat) zu authentifizieren. Diese Login und PIN sollten in unserer Datenbank gespeichert werden. Wir sollten auch in der Lage sein, diese "Sitzung" und PIN wann immer notwendig zu zerstören. Wir erwarten, dass die Webanwendung bis zu 10 000 registrierte Benutzer mit bis zu 1000 Benutzern gleichzeitig online haben wird.Spring REST Service, Benutzer registrieren, Authentifizierung

Wir planen auch nicht, einen separaten Authentifizierungsserver zu verwenden. Wir planen, Sicherheit in die Webanwendung (Backend) selbst einzubetten.

Ich habe zwei verschiedene Ansätze untersucht. Der erste ist der übliche Spring @ EnableWebSecurity-Ansatz. Das scheint ziemlich einfach zu sein, aber einige Leute sagen, dass es "Sitzungen" schaffen wird, die für den Server schlecht sind. Die Sitzung verbraucht viel Speicher, und die allgemeine Auswirkung auf die Leistung ist schlecht. Ist es wahr?

Der andere Ansatz besteht darin, Spring Oauth2 Implementierung zu verwenden. Ich hatte keine Zeit, um es richtig zu studieren, das scheint mir ein wenig übertrieben zu sein. Lohnt es sich, für unsere Bedürfnisse zu lernen? (Wir haben keine Zeit mehr).

Ich brauche auch eine richtige DB-Struktur für die Sicherheitsanforderungen.

Die Frage ist also, was ist der beste Ansatz für unsere Situation? Gibt es Open-Source-Projekte, die ähnliche Probleme lösen? Ich würde jede Hilfe schätzen.

Vielen Dank.

Antwort

1

Unabhängig von der Technologie, die Sie für die Authentifizierung verwenden, benötigen Sie Sitzungen, um den Status des authentifizierten Benutzers beizubehalten. Sie können Spring-Sicherheit allein oder mit Oauth2 verwenden.

Ich schlage aus Gründen der Einfachheit können Sie mit Spring Security with Token Funktionalität gehen.

Sie können jedoch einen guten Blog über Spring Security und Oauth finden.

Securing REST Services with Spring Security and OAuth2

Für weitere Klärung können Sie besuchen auch here

+0

Geben Sie mindestens einen Grund zur Abstimmung unten, so dass ich meine Antwort verbessern kann –

1

Sessions sollten zuzuteilen Speicher nur dann, wenn Sie in der Sitzung, große Datenmengen speichern sind. Solange du das nicht tust, wird es kein Problem geben. Sie müssen Ihre eigene Authentifizierungsentscheidung treffen, basierend auf Ihren akzeptablen Ebenen für Sicherheit und Benutzererfahrung, es gibt keine "richtige" Antwort. Spring Security und Sessions wurden bereits hier besprochen How can I use Spring Security without sessions?.

+0

Wie ich mit meinen Kollegen diskutiert habe, ist es wahr, Sitzungen benötigen nicht viel Speicher, da wir keine Daten speichern möchten der Benutzer. Wir müssen nur wissen, welcher Benutzer authentifiziert ist und vielleicht von welchem ​​Gerät. In Bezug auf die Sicherheit wollen wir, dass unsere Anwendung im Allgemeinen sicher ist, ohne Overkill. Soweit ich es verstehe, ist die Grundsicherheit im Frühling sicher genug dafür. Also werden wir wahrscheinlich bei diesem Ansatz bleiben. –

Verwandte Themen