OpenLDAP Authentifizierung

guy inkognito

Grünschnabel
Hallo,


ich stehe vor einem Java Problem, an dem ich schon seit einingen Tagen verzweifle. Suchen bei Google und diversen Foren haben mich der Lösung zwar näher gebracht, jedoch konnte ich das Problem nicht vollständig lösen.


Problem:

Wie die Überschrift es schon sagt, versuche ich eine Benutzerauthentifizierung gegen einen OpenLDAP Server durchzuführen. Bisher geschieht dies leider teils erfolglos.
Ein Anonymer Login ist kein Problem. Wenn ich jedoch mit einem bestimmten Account auf den Server möchte bekomme ich immer diese Fehlermeldung:
javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
Es hat also den Anschein, dass mein Passwort Probleme macht.

Hier mein Code:

Code:
java.util.Hashtable env = new java.util.Hashtable();
        env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(javax.naming.Context.PROVIDER_URL, "ldap://ldap.xxx.xxx.com:389");
        env.put("java.naming.ldap.version", "3");
                
        env.put(javax.naming.Context.SECURITY_AUTHENTICATION,"simple");
        env.put(javax.naming.Context.SECURITY_PRINCIPAL, "uid=" + uid + ", ou=xxx.com, o=xxx, c=DE");
        env.put(javax.naming.Context.SECURITY_CREDENTIALS, password);
        try {    
            ctx = new javax.naming.ldap.InitialLdapContext(env, null);
            loginConfirmed = true;
        } catch (NamingException ex) {
            Logger.getLogger("global").log(Level.SEVERE, null, ex);
            loginConfirmed = false;
        }    
 
        return loginConfirmed;

Dieser Code stammt übrigens schon teilweise aus einem Beitrag aus diesem Forum.

Ich hoffe mir kann jemand bei diesem Problem helfen. Danke im Voraus.
 
Hallo nochmal,

ich habe gerade gelesen, dass OpenLDAP weder Digest-MD5 noch Cram-MD5 unterstützt. Dies würde meine Ergebnisse bei versuchen mit diesen Varianten bestätigen. Weiterhin hiess es, dass JNDI aus diesem Grund keine Passwörter eines LDap Servers verifizieren kann.

Ist das korrekt? Gibt es evtl. doch eine Möglichkeit oder zumindest ein Workaround?


Danke im Voraus für Eure Hilfe.
 
Zurück