LDAP ModifyAttributes по электронной почте - PullRequest
1 голос
/ 28 июля 2010

Мне нужно изменить атрибуты существующей записи в LDAP. Кажется, что единственный способ получить запись - использовать поиск с помощью:

ctx.modifyAttributes(CN=Joe blue,cn=user,DC=foo,DC=com" , mods); 

Но мне нужно получить его по электронной почте (или войти в этом отношении). Я пробовал несколько вариантов, но получаю исключение именования, например:

ctx.modifyAttributes(&(objectClass=user)(mail=jblow*)),cn=user,DC=foo,DC=com)

javax.naming.InvalidNameException: (& (objectClass = user) (mail = jblow *)), cn = пользователь, DC = foo, DC = com: [LDAP: код ошибки 34 - 0000208F: NameErr: DSID-031001BA , проблема 2006 (BAD_NAME), данные 8349, лучшее соответствие: '(& (objectClass = пользователь) (mail = jblow *)), cn = пользователь, DC = foo, DC = COM,

Любые предложения будут с благодарностью.

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Как сказал geoffc, вам необходимо передать "отличительное имя" в функцию modifyAttributes вместе с модами.

Вы можете создать отдельную функцию, которая запрашивает LDAP, основываясь на ваших поисковых ограничениях (mail = jblow *), и возвращать строку "яжеленное имя ". Затем просто передайте функцию в ctx.modifyAttributes ().

String dn = distinguishedNameQuery();
ctx.modifyAttributes(dn, mods);
1 голос
/ 28 июля 2010

Нельзя предоставить поисковый фильтр для операции изменения. Вы должны предоставить полное DN, как показывает ваш первый пример.

Следовательно, сначала вам нужно выполнить поиск (mail = jblow *) в базовом DN cn = user, dc = foo, dc = com, чтобы найти полное DN интересующего вас объекта.

Затем вы можете выполнить модификацию на основе полного DN.

...