# Login-System - Best-Practices?



## SnooP (31. Mai 2007)

Moin...

ich möchte für mein JSF-Rahmenprojekt eine Vorlage für ein gutes/gesundes/praktikables Loginsystem erstellen, damit man das für spätere Projekte nicht ständig neu entwickeln muss. Wie sind da so die Best-Practices, gibt es da "gute" Quellen zu? Mir geht es insb. um die Modellstrutkur die dahinter steht, nicht so sehr um technische Details wie LDAP oder JAAS...

Habe mir ungefähr vorgestellt per PhaseListener jeweils zu gucken, ob ein User-Objekt existiert, wenn nein Login-Screen... sprich auf jeder Seite/View eine entsprechende Abfrage - kann man dafür die faces-config anpassen, so dass man die Login-Abfrage für einzelne Views an/ausschalten kann?

Daneben will ich natürlich aber nicht nur die Zustände angemeldet, nicht angemeldet haben, sondern auch versch. Zugriffsberechtigungen für bestimmte User bzw. Gruppen von Usern zulassen. Also Roles oder Policies... - eine Idee war, das jeder User ein (oder mehrere) entsprechendes Role-Objekt hinzugefügt bekommt. Ich möchte jetzt allerdings natürlich nicht auf jeder Seite prüfen in welcher Rolle der akt. User gerade ist (quasi instanceof) sondern andersrum über die Role selbst die jeweiligen Anzeigemöglichkeiten quasi polymorph steuern...
Speichern tu ich das ganze dann via Hibernate auf ner Datenbank - wobei ich mir für Navigation oder ähnliches auch xml-Konfigurationen überlegt hab...

Das geht natürlich für kleinere Unterschiede bzw. für generelle Zugriffsbeschränkungen auf Backend-Services ganz gut... - allerdings wird das beim komplexen Rendering von Views dann doch wieder umständlich... - z.B. für das dynamische Erstellen von Menüs etc. - sprich manchmal wird es sinnvoll sein verschiedene Views für verschiedene Userrechte zu erstellen (wenn sie sich zu sehr unterscheiden in der Darstellung)

Gibts da schöne Konzepte, Theorien oder auch was praktisches?  - muss jetzt auch nicht im JSF Kontext sein. Da ich eh Spring einsetzen wollte, wäre ja evtl. auf der Serviceseite auch AOP interessant, oder?

TIA


----------



## WeirdAl (31. Mai 2007)

Hi,
wenn du Spring einsetzt wäre evtl Acegi was für dich. Ich selbst habe nur ein einfaches Authorizationssystem über Servletfilter der überprüft, ob ein User eingeloggt ist und meine Seiten unter WebConten/pages/protected beschützt.


Cu
Alex


----------



## WeirdAl (31. Mai 2007)

dobbelboschd


----------



## SnooP (31. Mai 2007)

Yeah groovy genau sowas  ... wollte ich zwar selbst schreiben, aber das ist natürlich noch ein wenig krasser *g* ... besonders die Tag-Library hat mich letztlich überzeugt... sehr schön!


----------



## amairgen (15. Jun 2007)

Ist zwar n bisschen alt das ganze, trifft meine Frage aber ziemlich gut: kennt jemand zum oben beschriebenen Problem auch eine Lösung ohne Spring?

Gruss Amairgen


----------



## SnooP (17. Jun 2007)

Also es gibt generell auch einfachere Lösungen ... z.B. kann man die Sicherheitsgeschichte direkt mit dem Tomcat machen und auch dort z.B. ne Datenbank als Speicherort für User/Passwörter nutzen mit eigenem Login-Formular... das geht über ne jsp-seite und danach kann man dann jeweils auf die User + Userrollen zugreifen...
Tomahawk bietet dann in seinen Komponenten auch ein zusätzliches Attribut isUserinRole mit dem man dann genau sagen kann, ob der User berechtigt ist die Komponente zu sehen bzw. ob sie deaktiviert dargestellt werden soll (eingegraut). Da gibts auch ne umfangreiche Navigationskomponente die je nach Rollen anders aufgebaut werden kann...


----------

