tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1241
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MHofmann MHofmann ist offline Brainwashed
    Registriert seit
    Sep 2009
    Beiträge
    5
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
            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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    
    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
    Geändert von MHofmann (04.09.09 um 13:13 Uhr)
     

  2. #2
    MHofmann MHofmann ist offline Brainwashed
    Registriert seit
    Sep 2009
    Beiträge
    5
    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.
     

  3. #3
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Grundsätzliche Frage: Warum nicht die LDAP Integration von Spring Security?
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  4. #4
    MHofmann MHofmann ist offline Brainwashed
    Registriert seit
    Sep 2009
    Beiträge
    5
    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
     

Ähnliche Themen

  1. Spring Security NTLM & Spring Framework 3.0
    Von Thomas Darimont im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 26.01.10, 12:50
  2. Spring-Security und Tomcat Policy-Files
    Von pasternak im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 12.01.10, 22:41
  3. Planung Serversoftware mit Spring als Framework, wie Spring einsetzen?
    Von DarthShader im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 8
    Letzter Beitrag: 26.09.08, 19:05
  4. Antworten: 2
    Letzter Beitrag: 26.09.07, 13:29
  5. Spring One Praesentation: Introduction to Data Access with Spring.NET
    Von Thomas Darimont im Forum .NET Datenverwaltung
    Antworten: 2
    Letzter Beitrag: 21.06.06, 13:42

Stichworte