PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Webbasierende Nutzerauthentifizierung am LDAP mit spezifischer Zuweisung


Baxxe
19.07.2005, 11:24
Hallo,

nach dem mir hier sehr geholfen wurde bei meinen bisherigen Problemen komme ich nun erneut mit einem (komplizierteren?) Problem bei dem mein Wissensstand oder das Begreifen an sich versagt. Als Systemintegrator tut man sich schon schwerer denn als Anwendungsentwickler :mauer:

Zum Problem (ich hoffe, ich bin im richtigen Board):
Ich soll eine webbasierende Nutzerauthentifizierung im JSP schreiben, mit dem sich die Nutzer hier im Betrieb an einem LDAP-Server (Verbindung zur ADS) einloggen können. Dabei gibts es lokal unterschieliche Nutzer, was durch ein zweibuchstabiges Kürzel am Ende des Login-Namens erkenntlich ist. Nun soll natürlich überprüft werden, ob es den Nutzer gibt und, falls ja, welches Kürzel er noch hinten dran "hängen" hat. Anhand diesem Kürzel soll der Nutzer auf eine eigene Seite weitergeleitet werden, auf der er config-Dateien editieren kann mit Hilfe der JSP welche ich in diesem Thread (http://www.coding-board.de/board/showthread.php?t=16133) schon angesprochen habe.

Laufen habe ich hier einen Tomcat 5.5 Server.
Das erste mal gehört von JSP habe ich vor zwei Wochen und davor war das höchste der gefühle HTML "Hormatierungen" zu machen. (Systemintegrator halt)

Wenn ich mich richtig informiert habe muss ich schon in der Konfiguration des Servers die Einstellungen für die Authentifizierung am LDAP vornehmen. Dieses <Realm>-Element muss ich, wenn ich mich nicht irre, in die <CATALINA_HOME>/conf/server.xml-Datei schreiben. Dann brauche ich auch noch eine JSP die eine verschlüsselte Verbindung zum Server aufbaut um Nutzername und Passwort zu übertragen und das schon angesprochene Kürzel (Sechs unterschiedliche; z.B.: "nachnamelb" 'lb' ist das kürzel oder "ga_nachnamefr" 'fr' ist das kürzel) zu überprüfen. Je nach Kürzel und erfolgreicher Authentifizierung wird der Nutzer dann auf eine andere JSP weitergeleitet, welche allerdings nur nach Authentifizierung aufrufbar sein soll.

Realm-Element:
<Realm class Name="org.apache.catalina.realm.JNDIRealm"
debug="99"
connectionURL="ldap://ip-des-ldap-servers:389"
???
/>

JSP:
Da geben die Bücher nicht viel her was SSL-Verbindung, Authentifizierung und gerade die Erkennung des Kürzels angeht :(

Ich bitte um Eure Hilfe


eViL_oNe
21.07.2005, 00:41
soweit ich das richtig kapiere, braucht man in der web.xml security-constraint mit Definition der url-patterns und verlangten Zugriffsrollen, sowie ein login-config zur Angabe der Authentifizierungsmethode

mhaller
21.07.2005, 10:46
Ja, normalerweise reicht das, wenn dann zusätzlich in der tomcat-users.xml die entsprechenden User drinstehen.
Hier gehts aber um einen anderen Realm, der Benutzer sollen nicht in der tomcat-userl.xml drinstehen, sondern dynamisch extern gegen einen LDAP geprüft werden.

Das mit dem Kürzel verstehe ich nicht so ganz. Ist das Kürzel eine Art Gruppenzugehörigkeit?

Wenn du dynamisch darauf reagieren willst, ob ein Benutzer ein bestimmtes Kürzel mit Namen hat oder nicht, musst du wohl oder übel eine eigene Realm Klasse implementieren.

Ich habe etwas ähnliches mit einem javax.servlet.Filter geregelt. Ich will Benutzer gegen einen zweiten Server authentifizieren, allerdings ist das ein proprietärer Server, somit fällt LDAP im Moment weg.
Der Filter wird bei jedem Request vorgeschalten und prüft auf eine existierende Session. Wenn keine Session vorhanden, leitet er zu einer Login-Form weiter. Wenn Login-Form submitted wird, schickt er die Daten an den zweiten Server, dieser prüft und gibt entweder true oder false zurück.

Ich denke aber, in deinem Fall ist ein Realm die bessere Lösung. Denn dort kannst du extends org.apache.catalina.realm.RealmBase machen und entsprechend die Methoden authenticate(user,pass) bzw. hasRole(user,role) implementieren.

In deinenen JSPs kannst du dann mit Taglibs prüfen, ob eine bestimmte role vorhanden ist, und dann das HTML anzeigen lassen, welches der User sehen soll, wenn er die Rolle besitzt oder nicht.
So lassen sich einfach erweiterte Funktionalität für bestimmte Gruppen von Benutzern darstellen. (z.B. Admin-Menüs)

Baxxe
28.07.2005, 12:10
gut, soweit hab ich das kapiert.

Vom Verständnis und dem Ablauf her ist das im Prizip auch kein wirklich goßes Problem, mir mangelt es da nur am Fachwissen, was die Syntax der JSP und der Konfiguration des Servers angeht.

Wisst ihr da evtl. eine gute Anleitung genau zu dem Thema?

Wenn ich im Internet suche komme ich zwar auch auf viele Seiten, jedoch stelle ich fest, dass die Hilfe, die einem dort angeboten wird, sich eher auf Experten- und Fortgeschrittenenebene befindet. Dummerweise bringt mir mein schulisches C++ auch nicht weiter, da wir dort bis jetzt ganz andere Sachen gemacht haben.

Was schätzt Ihr wie lange das dauern wird, wenn ich mich da voll reinarbeite in JSP und Tomcat, bis ich eigenständig solch ein Problem lösen kann?

PS: zum Thema Kürzel hintern den Usernamen: Wir haben mehrere Standordte und mehrere Domänen, die alle mit einer root-Domäne verbunden sind, sodass sich jeder User überall an jedem Standort an einem Rechner mit seinen normalen Nutzerdaten anmelden kann. Das Kürzel ist die Abkürzung für den Standort an dem der User arbeitet.

eViL_oNe
28.07.2005, 14:37
http://cymulacrum.net/writings/adv_tomcat/c487.html