Я пытаюсь удалить участника из большой группы ldap Active Directory (AD). Приведенный ниже код удалит участника, если группа небольшая. Однако это не сработает, если он больше, поскольку AD разбивает элементы на несколько атрибутов, связанных с диапазоном.
group.removeMember(person.getFullDn());
ldapTemplate.update(group);
Я попытался получить доступ к этим атрибутам напрямую, используя что-то вроде приведенного ниже. IncrementalAttributesMapper позволяет мне получить список атрибутов членов, связанных с диапазоном, т.е. member;Range=0-1499, и я пытаюсь удалить человека из каждого, но безуспешно. Я не получаю сообщения об ошибке, но человек также не удаляется из группы
DirContextOperations ctx = ldapTemplate.lookupContext(group.getDn());
IncrementalAttributesMapper<?> attributesMapper = new DefaultIncrementalAttributesMapper("member");
while (attributesMapper.hasMore()) {
String[] attributes = attributesMapper.getAttributesForLookup();
for (String attribute: attributes ) {
ldapTemplate.lookup(group.getDn(), attributesMapper.getAttributesForLookup(), attributesMapper);
ctx.removeAttributeValue(attribute, person.getDn() );
ldapTemplate.modifyAttributes(ctx);
}
}
Надеюсь, кто-то добился большего успеха в этом. Заранее спасибо!