Active Directory und Ldap-Zugriff

Mazee

Grünschnabel
Hallo zusammen,

ich habe mir den code von einem Programm aus dem Internet geschnappt und bearbeitet, mit der Hoffnung das ich mich am Ldap-Server anmelden kann. Doch leider bringt er mir immer eine Fehlermeldung. Woran kann es liegen?

package Tool;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;

public class ActiveDirectorySearchExample {

final static String ADMIN_NAME = "CN=WalterM. OU=Admins, OU=All Users";

final static String ADMIN_PASSWORD = "XXX";

final static String SEARCH_BASE = "DC=bc,DC=cmc,DC=ad";

static LdapContext ctx;

/**
* @param args
*/
public static void main(String[] args) throws Exception {
init();
List list = findUsersByAccountName("");
for (Iterator iter = list.iterator(); iter.hasNext();) {
String element = (String) iter.next();
System.out.println(element);
}
ctx.close();
}

static void init() throws Exception {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, ADMIN_NAME);
env.put(Context.SECURITY_CREDENTIALS, ADMIN_PASSWORD);
//Der entsprechende Domänen-Controller
env.put(Context.PROVIDER_URL, "ldap://dc-bc-ke01:389");
ctx = new InitialLdapContext(env, null);
}

static List findUsersByAccountName(String accountName) throws Exception{
List list = new ArrayList();

String snPrefix = accountName.substring(0, 2) + "*";
String givenNamePrefix = accountName.substring(2) + "*";

//Unsere LDAP Abfrage...
String searchFilter = "(&(objectClass=user)(sn=" + snPrefix
+ ")(givenName=" + givenNamePrefix + "))";

//System.out.println(searchFilter);

SearchControls searchControls = new SearchControls();
String[] resultAttributes = { "sn", "givenName", "sAMAccountName" };
searchControls.setReturningAttributes(resultAttributes);
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);

NamingEnumeration results = ctx.search(SEARCH_BASE, searchFilter,
searchControls);

while(results.hasMoreElements()){
SearchResult searchResult = (SearchResult)results.nextElement();
list.add(searchResult.toString());
}
return list;
}
}
 
Ja ich weiß, den Code hab ich von da :-) Aber ich wollte einfach mal testen ob ich Ihn überhaupt ansprechen kann :-)

Das ist die ganze Fehlermeldung:

Exception in thread "main" javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 525, vece
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3005)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2951)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2951)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2753)
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2667)
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:287)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:175)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:193)
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:136)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:66)
 
Hallo Zusammen,
ich bin während der Suche nach einer Lösung zu meinem Problem auf diesen Artikel zugestoßen.

Ich habe nähmlich das gleiche Problem wie Mazee und komme nicht weiter. Worauf muss man bei der Initialisierung vom LDAP, um die Fehlermeldung, welche Mazee schon beschrieben hat nicht zu bekommen?

Mit bestem Dank

ghazalin
 
Zurück