Это моя первая попытка запросить информацию об AD на нашем сервере LDAP.Когда я пытаюсь выполнить запрос к серверу LDAP, вот что я пытаюсь получить:
Я пытаюсь получить всех активных сотрудников с пределом 500 записей, отображаемое имя которого начинается с «sav», есть электронная почтаaddress и имеет атрибут userAccountControl, равный 512. Проблема, с которой я сталкиваюсь, заключается в том, что я получаю только 8 записей.Я должен был буквально вернуть как минимум 10 записей.
Я провел отдельный поиск по двум записям, которые НЕ были получены в моем поиске, и у каждой был адрес электронной почты и значение userAccountControl 512. Так что яне уверен, почему эти 2 записи отсутствовали.
Я уверен, что что-то не так в моем синтаксисе, но я не могу найти, что это такое.Любая ПОМОЩЬ / НАПРАВЛЕНИЕ будут оценены.Спасибо.
После поиска в Google я определил ФИЛЬТР ПОИСКА как:
String searchFilter = "(&(objectClass=user)(displayname="+displayname+"*"+")(mail=*)(userAccountControl=512))";
Пожалуйста, см. Мой полный метод ниже:
public List<String> getAutocompleteEmpRecordsList(String displayname, LdapContext ctx) {
List<String> activeEmpAttributes = new ArrayList<String>();
Attributes attrs = null;
int count = 0;
int empEmailAddrLen = 0;
try {
SearchControls constraints = new SearchControls();
constraints.setCountLimit(500);
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
String[] attrIDs = {"displayname", "mail", "userAccountControl"};
constraints.setReturningAttributes(attrIDs);
String searchFilter = "(&(objectClass=user)(displayname="+displayname+"*"+")(mail=*)(userAccountControl=512))";
NamingEnumeration answer = ctx.search("OU=Standard,OU=Users,DC=xxx,DC=org", searchFilter, constraints);
if (answer != null) {
while (answer.hasMore()) {
attrs = ((SearchResult) answer.next()).getAttributes();
if (attrs.get("displayname") != null) {
int empNameLen = attrs.get("displayname").toString().length();
activeEmpAttributes.add(attrs.get("displayname").toString().substring(13, empNameLen));
}
count++;
ctx.close();
}
}
else {
throw new Exception("Invalid User");
}
System.out.println("activeEmpAttributes: " + activeEmpAttributes);
System.out.println("count: " + activeEmpAttributes.size());
} catch (Exception ex) {
ex.printStackTrace();
}
return activeEmpAttributes;
}