# Zentrale Benutzerverwaltung



## deamon (3. Nov 2009)

Hallo,

praktisch jede Anwendung, die von mehreren Benutzern verwendet werden kann, braucht auch eine Benutzerverwaltung. Viele Anwendungen bringen ihre eigene Benutzerverwaltung mit und einige verlassen sich auf die Benutzerverwaltung des Anwendungsservers. Letzteres finde ich deutlich eleganter als in jeder Anwendung das Rad neu zu erfinden und den Nutzer schlimmstenfalls zur wiederholten Eingabe von Name und Passwort zu zwingen. 

Die in Anwendungsservern eingebaute Benutzerverwaltung scheint mir nicht dafür ausgelegt zu sein, um sich Nutzer in den Anwendungen (z. B. ein Forum, Shop ...) selbst registrieren zu lassen. Typischerweise wird man diese Nutzer also in einer "normalen" Datenbank speichern. Bloß diese Datenbank könnte man dann über JAAS an den Anwendungsserver anbinden. Dieser Verbindungscode wäre wohl aber an einen bestimmten Server gebunden, aber da das nicht so schwierig sein sollte, wäre das nicht weiter tragisch.

Erschwerend hinzu kommt, dass auch noch verschiedene Authentifizierungsverfahren wie Passwort, OpenID und LDAP-Authentifizierung unterstützt werden sollen. 

Im Moment stelle ich mir eine kleine Webanwendung vor, mit der man Nutzer, Gruppen und Rollen verwalten kann. Als Standardverfahren würde diese Anwendung auch die Authentifizierung mit Passwort unterstützen. Wenn eine Anwendung eine Authentifizierung eines Nutzers benötigt, würde sie sich aber nicht direkt an die Nutzerverwaltung sondern an einen Zentralen Dienst wie CAS wenden. Der CAS-Server würde wiederum bei Passwort-Authentifizierung die Benutzerverwaltung fragen und bei anderen Verfahren einen entsprechenden anderen Dienst.

Der Ablauf sieht prinzipiell so aus, wobei am Ende mehrere Verfahren nebeneinander stehen:

Browser -> Web-Anwendung -> CAS -> Nutzerverwaltung | OpenID-Anbieter | LDAP ...

Wie gestaltet man am besten die Nutzerverwaltung, wenn man sie vom Anwendungsserver trennt? Gibt es dafür fertige Ansätze? Ich denke da an etwas schlankes und nicht etwas monströses wie den Sun Identity Manager. Etwas, das jeder Entwickler eines Forums, Blogs, Shops ... als standardmäßige Benutzerverwaltung mit ausliefern könnte, so dass mehrere Anwendungen den Datenbestand nutzen können und nicht jedesmal das Rad neu erfunden werden muss.


----------



## FArt (4. Nov 2009)

JAAS ist ein Standard und genau das was du benötigst.


----------



## deamon (4. Nov 2009)

JAAS ist ein Standard und die Schnittstellen davon könnte ich auch verwenden, aber JAAS ist trotzdem nicht das, was ich suche. Denn JAAS ist eben keine Benutzerverwaltung. Nach allem was ich bisher recherchiert habe, gibt es dafür keine einfache Standardkomponente. Entweder man strickt sich eine Benutzerverwaltung selbst, nutzt die eingeschränkte Nutzerverwaltung des Containers oder ein monströses System wie den Sun Identity Manager.

Sieht so aus, als müsste ich mir doch selbst eine Nutzer- und Rollenverwaltung schreiben. Die könnte dann aber per JAAS angesprochen werden ...


----------



## Noctarius (4. Nov 2009)

Sowas? openid-server - Project Hosting on Google Code


----------



## FArt (4. Nov 2009)

Du brauchst halt passende Loginmodule. Je nach Art (LDAP natürlich anders als z.B. User/Passwort) wirst du aber verschiedenste Implementierungen benötigen, ein "ich kann alles" wird es wohl nicht geben...


----------

