Spring LDAP und Tomcat

MHofmann

Brainwashed
Hallo Zusammen,

ich beschäftige mich derzeit mit LDAP und möchte ein webbasiertes Frontend zur Verwaltung und Modifikation der im LDAP gespeicherten Daten entwickeln.
Spring LDAP erscheint mir da als ein geeigneter Ansatz, da ich denke, dass mir dadurch viel Programmieraufwand abgenommen wird (im Vergleich zum reinen JNDI).

Webserver ist ein Tomcat

Zu allererst möchte ich einen Login schreiben. Dazu eine Methode die bei übergebener UID bzw DN und entsprechendem Passwort true oder false zurück gibt. Folgender Code :
Code:
		public boolean checkPassword(String uid, String password) {

			// DN konstruieren
			DistinguishedName dn = new DistinguishedName("ou=Teams Portale, ou= People, o=vespa");
			System.out.println("PwCheck dn.to string "+dn.toString());
			dn.append(new DistinguishedName(uid));
			
			// Verbindung herstellen
			LdapContextSource ctxSource = new LdapContextSource();
			ctxSource.setUrl("ldap://192.168.6.66:389/");
			ctxSource.setUserDn(dn.encode());
			ctxSource.setPassword(password);
			ctxSource.setPooled(false);
			try {
			    ctxSource.afterPropertiesSet();
			    ctxSource.getReadWriteContext();
			    return true;
			}
			catch(Exception e) {
			    return false;
			}
		    }
funktioniert ohne Probleme wenn ich in z.B. über ne Main starte und mir den Rückgabewert ausgeben lasse.Soweit so gut. Jetzt kommt aber mein Problem, sobald ich die entsprechende Methode aus einem Servlet :
Code:
package contol;

import java.io.IOException;
import tools.PwCheck;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginControl
 */
public class LoginControl extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * Default constructor.
	 */
	public LoginControl() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doGet(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String destination = "/jsp/loginFail.jsp"; // Ziel der Weiterleitung für
													// Dispatcher
		// ///Daten aus dem Request holen und vorbereiten
		String loginname = request.getParameter("loginname");
		// Loginnamen nach Vor und Nachnamen splitten
		// Hier nen JAVASCRIPT das abfängt, dass nur im Format Name, Name
		// eingegeben werden kann
		// oder sonst iwie abfangen
		String[] result = loginname.split(",");
		String sn = result[0];
		System.out.println("LoginControl sn= " + sn);
		String givenname = result[1];
		System.out.println("LoginControl givenname= " + givenname);
		String passwort = request.getParameter("passwort");

		PwCheck checkpw = new PwCheck();
		System.out.println("LoginControl=" + checkpw.toString());
		checkpw.checkPassword(sn, passwort);

		// ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, dn);
		// ctx.addToEnvironment(Context.SECURITY_PRINCIPAL,
		// "uid="+uid+",ou=Teams Portale,ou=People");
		// ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, passwort);

		RequestDispatcher dispatcher = getServletContext()
				.getRequestDispatcher(destination);
		dispatcher.forward(request, response);

	}
}
aufrufe bekomme ich immer folgende Fehlermeldung:
04.09.2009 10:01:48 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet LoginControl threw exception
java.lang.ClassNotFoundException: org.springframework.ldap.core.DistinguishedName
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at tools.PwCheck.checkPassword(PwCheck.java:14)
at contol.LoginControl.doPost(LoginControl.java:58)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)

Was zur Hölle ist da los?
Kann ich Spring Ldap nur in Verbindung mit weiteren Spring libs nutzen?
Ich gehe hier mittlerweile auf dem Zahnfleisch denn meine Suche im Netz baut einen riesen Berg von Wissenlücken vor mir auf...Spring im Allgemeinen, Maven, Jetty, Beans, ...uiuiui ich will doch nur nen simples Frontend mit ganz eingeschränkten administrativen LDAP Funktionen bauen....
Kann mir jemand helfen , oder zumindest entscheidene Tips geben wo ich genau meinen Wissensstand ausbauen muss!
Vielen Dank im voraus,.. und solange ich auf eine Antwort warte schaue ich mal ob ich hier im Forum jemandem helfen kann ;)
 
Zuletzt bearbeitet:
Kann jetzt sagen was da los ist ;)
Habe im tomcat nicht die entsprechenden Libs gehabt.
Dachte, da ich in Eclipse arbeite, dass im Prinzip alle beim Projekt importierten jars auch dem Tomcat zur verfügen stehen. Ist scheinbar nicht so, sondern muss manuel geschehen.
 
Hi,
stimmt, das habe ich auch schon in Erwägung gezogen.
Aber irgendwie habe ich etwas den Überblick verloren wo es lohnt Zeit zu investieren und wo nicht.
Um Spring Ldap zu kapieren muss ich jetzt auch erstmal den ganzen Stuff mit den Spring Beans und der damit verbundenen xml Geschichte bearbeiten. Leider habe ich da auch noch nicht wirklich einen geordneten Zugang zu gefunden,.. in gewisser Weise drängt auch die Zeit.
Das es Zeiteffektiever ist sich einmal mit den Grundlagen zu befassen und dann dem eigentlich Prolbem zu widmen verstehe ich leider immer erst wenn ich schon zig Versuche mit gefählrichem Halbwissen hinter mir habe ;)
Wirklich etwas Gutes im Internet gefunden habe ich leider nicht.
Noch nicht einmal die Beispiele im Spring Ldap Packet bekomm ich ans Laufen. Bzw. bekomm sie nicht funktionstüchtig nach Eclipse importiert.
Naja,... gibt es eigentlich Meinungen zu dem Buch "Spring 2.5: Eine pragmatische Einführung". Mir scheint es ganz geeignet!
Greets Matthias
 

Neue Beiträge

Zurück