У меня есть фрагмент кода Java, который выполняет простой поиск в Active Directory.Код работает должным образом при использовании нашей рабочей AD, но при использовании того же кода в нашей тестовой AD никакие результаты не возвращаются (исключение или ошибка не выдается).
При использовании браузера AD на моей машине явозможность просматривать и искать в тестовой AD и находить результаты, которые я ищу.
AD предоставляет доступ на чтение всем, так что это не проблема с разрешениями.
Кто-нибудь знает, что можетбыть причиной того, что он не возвращает никаких результатов моему java-клиенту, но делает это моим браузером?
Java-код:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, Constants.LDAPURL);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.REFERRAL, "follow");
DirContext dctx = new InitialDirContext(env);
String base = Constants.LDAPQUERYLOCATION;
SearchControls sc = new SearchControls();
String[] attributeFilter = {"cn", "sAMAccountName", "sn", "distinguishedName"};
sc.setReturningAttributes(attributeFilter);
sc.setSearchScope(SearchControls.SUBTREE_SCOPE);
String filter = "(&(objectClass=User)(sn=smith))";
NamingEnumeration results = dctx.search(base, filter, sc);
if(!results.hasMore()){
log.debug("No results found");
}
while (results.hasMore()) {
SearchResult sr = (SearchResult) results.next();
Attributes attrs = sr.getAttributes();
Attribute attr = attrs.get("cn");
log.debug("cn: "+attr.get());
attr = attrs.get("sn");
log.debug("sn: "+attr.get());
attr = attrs.get("distinguishedName");
log.debug("dn: "+attr.get());
}
dctx.close();
У меня нет контроля над AD, поэтому я не могудействительно предоставить много информации о его настройке.