17

Spring Security ist großartig, wenn der Entwickler seine Web App sichern möchte.Konto erstellen, Passwort vergessen und Passwort ändern

Wie auch immer, was ist mit Erstellen des Kontos? und "Passwort vergessen"? Die meisten Anmeldeseiten haben diese Links sowie die Felder Benutzername und Passwort. Die Standard-Login-Seite von Spring hat diese Links nicht ... im guten Fall kann sie "remember me" unterstützen ...

Unterstützt Spring diese Abläufe, von Konto erstellen, Passwort vergessen und Passwort ändern? Wenn die Antwort ja lautet, können Sie mich bitte auf einige Dokumentationen verweisen?

Ich habe dieses Problem durchsucht, konnte aber nichts finden.

Danke!

+1

Ich denke, die Antwort ist nein. Da es sich bei diesen Aktionen nicht um generische Aktionen handelt, unterscheiden sie sich von Anwendung zu Anwendung. Wie weiß der Frühling, welche Felder in Ihrem Anmeldeformular benötigt werden? oder wie möchten Sie das Passwort wiederherstellen? (per E-Mail. SMS, etc ..) – luizcarlosfx

+1

Ich verstehe; aber ich dachte, vielleicht gibt es etwas Generisches, das anpassbar und erweiterbar ist (wie alle anderen Spring-Projekte ...) – user3619976

+0

Es ist nicht so schwierig zu implementieren. Konto erstellen ist ein grundlegendes Formular. Ich habe beide 2 in meinem Projekt implementiert und hatte keine Schwierigkeiten. Um das Passwort wiederherzustellen, schicke ich eine E-Mail an den Benutzer mit einer uniqueId (http://java.sun.com/javase/6/docs/api/java/util/UUID.html) und ich habe einen Controller, der diese ID überprüft und Wenn es gültig ist (in meiner user_request-Tabelle gespeichert), leite ich den Benutzer auf eine Seite weiter, auf der er ein neues Passwort definieren wird, da das ursprüngliche Passwort verschlüsselt ist. – luizcarlosfx

Antwort

14

Sie haben völlig Recht. AFAIK gibt es kein "generisches" Paket, das diese Flüsse implementiert. Ich habe vor einiger Zeit viel nach dieser Art von Code gesucht und nichts gefunden. Ich denke, dass @luizcarlosfx hat Recht, dass jede Anwendung ihre eigenen Bedürfnisse hat, deshalb ist es schwer, etwas Generisches zu schreiben, das allen Bedürfnissen entspricht.


EDIT: ich Kommentare sah wie "Es ist nicht so schwierig zu implementieren". Wahr. Aber Sie müssen sicherstellen, dass Sie sich um alle Fälle kümmern. Was passiert beispielsweise, wenn ein Benutzer versucht, ein Konto zu erstellen, das bereits existiert? Was passiert, wenn ein Benutzer versucht, ein Konto zu erstellen, das bereits existiert aber inaktiv? Was ist mit der Politik des Passwortes? (zu lang/zu kurz/wie viel Kapital usw.) Was ist mit dem Senden der E-Mail mit dem Aktivierungslink an den Benutzer? Wie schaffst du diesen Link? Wie verschlüsseln Sie es? Was ist mit dem Controller, der den Klick auf den Link erhält und den Account aktiviert? und mehr und mehr ...


jedoch, nahm ich es einen Schritt nach vorn und versuchte, etwas zu codieren, dass die meisten Strömungen beantworten - Registrierung, Passwort-Passwort, Passwort ändern usw., und etwas, das sein wird, Sicher genug, damit Anwendungen es ohne die Angst, dass es leicht gehackt werden kann, verwenden können.

Ich habe ein JAVA-Projekt für diesen Anwendungsfall implementiert. Es ist Open Source, basierend auf Spring-Security. Eine Release-Version ist auf Maven-Central, also müssen Sie es nicht kompilieren, sondern können es als Maven-Abhängigkeit zu Ihrem Projekt holen!

<dependency> 
    <groupId>com.ohadr</groupId> 
    <artifactId>authentication-flows</artifactId> 
    <version>1.5.0-RELEASE</version> 
</dependency> 

Ich denke, es ist Ihre Frage beantwortet ...

Es gibt Erklärungen für alles (und wenn etwas fehlt - lassen Sie mich ... wissen)

Sie können find here ein Beispiel für eine Client-Anwendung Code (dh die Verwendung).

Dies ist die plus eine Demo, und another demo is here (aber das ist eine App, die nach dem Upgrade auf Version 1.6.1 erfordert Anmeldung mit E-Mail mit "nice" Domain - nice.com. So können Sie es nicht wirklich für Demo verwenden ; benutze das erste Beispiel). Dies ist eine Client-Web-App, die die Auth-Flüsse verwendet, mit der README mit allen Erklärungen.

Hoffe, dass hilft!

+0

sieht gut aus! cool! aber alle form (und beans.xml) sind in der ** client ** -Seite, also muss der Client noch Sachen hinzufügen ... – user3619976

+2

danke :-) natürlich sind die UI-Formulare etwas, das jede App anders will . Es hat also keinen Sinn, die Form zu verallgemeinern. Ich habe jedoch dokumentiert, welche Felder in diesen Formularen angezeigt werden sollen. – OhadR

+2

Wirklich gute Arbeit –

0

Ich denke, appfuse ist ein Werkzeug für was Sie wollen. Diese Linien sind von ihm Dokumentation ist:

AppFuse mit Funktionen aus der Box kommt, dass viele Anwendungen benötigen, einschließlich:

  • Authentifizierung und Autorisierung
  • Benutzerverwaltung
  • Remember Me (das speichert Ihre Login-Informationen, so dass Sie nicht müssen sich jedes Mal anmelden)
  • Passwort Erinnerung
  • Anmelden und die Registrierung
  • SSL Schalt
  • E-Mail
  • Erweiterung lose URLs Datei-Upload
  • Generisches CRUD Backend
  • Voll Eclipse IDEA und NetBeans unterstützt
  • Schnelle Inbetriebnahme und keine deploy mit Maven Jetty Plugin
  • Testbar auf mehrere Appservers und Datenbanken mit Cargo und Profile