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 :
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 :
aufrufe bekomme ich immer folgende Fehlermeldung:
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
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;
}
}
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);
}
}
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: