JND InvalidSearchFilterException - Как я могу искать LDAP для канонического имени? - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь получить адрес электронной почты, заданный в Active Directory, с указанным каноническим именем через JND. Я пробовал тот же процесс с другими параметрами (например, sAMAccountName, имя участника или почта), но на этот раз он не работает.

initializeLDAP();
String searchFilter = "(&(objectClass=user)(canonicalName=" + name + "))";
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String returnedAttributes[] = { "mail" };
searchControls.setReturningAttributes(returnedAttributes);
NamingEnumeration<SearchResult> results = ctx.search(ldapSearchBase, searchFilter, searchControls);
SearchResult searchResult = null;
searchResult = results.nextElement();

if (searchResult.getAttributes().get("mail") != null
                    && searchResult.getAttributes().get("mail").get() != null) {
    logger.info("mail to canonical name {} is {}", name,
    searchResult.getAttributes().get("mail").get());
                mail = (String) 

searchResult.getAttributes().get("mail").get();
   ...}

В этой строке я получаю следующее исключение NamingEnumeration<SearchResult> results = ctx.search(ldapSearchBase, searchFilter, searchControls);

javax.naming.directory.InvalidSearchFilterException: [LDAP: error code 18 - 0000216B: AtrErr: DSID-031404E3, #1:
    0: 0000216B: DSID-031404E3, problem 1004 (WRONG_MATCH_OPER), data 0, Att 90394 (canonicalName)

Я бы предпочел поискать другой параметр, но, к сожалению, каноническое имя - это все, что я получил из вывода скрипта powershell. Так есть ли другой способ его поиска?

1 Ответ

0 голосов
/ 15 мая 2019

Nevermind.

Я читал, что каноническое имя является составным атрибутом и, следовательно, не доступно для поиска. Я вырезал строку канонического имени после последней / и использовал ее для поиска cn, который работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...