2016-11-04 3 views
0

У меня настроено несколько контроллеров домена и вы хотите изменить пользовательские атрибуты пользователей во всех доменах.Spring LdapContextSource разные контроллеры домена

Моя конфигурация выглядит следующим образом:

<bean id="writeLdapContextSource" 
    class="org.springframework.ldap.core.support.LdapContextSource"> 
    <property name="url" value="ldap://123.12.123.3:389" /> 
    <property name="base" value="" /> 
    <property name="userDn" value="domainx\userabc" /> 
    <property name="password" value="secret124" /> 
    <property name="pooled" value="false"/> 
    <property name="referral" value="follow"/> 
</bean> 

Я могу успешно изменить пользователей в локальном домене. Нет проблем.

Но если я попытаюсь изменить пользователей в другом домене, я получаю сообщение об ошибке.

Примечание: Пользователь ldap-пользователя "domainx \ userabc" имеет правильное разрешение на внесение изменений во всех доменах.

Примеры:

1.) Модификация атрибута пользователем в другом домене

вызвано следующими причинами: javax.naming.OperationNotSupportedException: [LDAP: код ошибки 53 - 00000057: LdapErr: DSID- 0C04214C, комментарий: ошибка в операции преобразования атрибутов, данных 0, v1db1

2.) Изменена конфигурация будет использовать порт 3268 вместо 389

Вызванный: javax.naming.OperationNotSupportedException: [LDAP: код ошибки 53 - 00002035: LdapErr: DSID-0C090B45, комментарий: Операция не допускается через GC порт, данные 0, v1db1

Примечание: I'am способный изменять атрибуты пользователя в локальном домене. Поэтому мой код для изменения правильный.

Отрывок:

DirContextOperations context = writeLdapTemplate.lookupContext(ldapUser.getDistinguishedName()); 
context.addAttributeValue(attributeName, attributeValue); 
writeLdapTemplate.modifyAttributes(context); 

Это отлично работает для локальных пользователей домена.

У кого-нибудь есть идея, что делать, чтобы иметь возможность изменять пользователей в других доменах?

Я также проверил пользователя с LDAP Browser, и он может видеть все домены ...

ответ

0

Глобальный каталог (порт 3268) обеспечивает только чтение «снимок» всех записей в лесу. Для выполнения операций записи в записи вам нужно будет привязать к соответствующему домену на порту 389.

Вы можете использовать Глобальный каталог для запроса всех доступных доменов, а затем динамически создавать LdapTemplates для каждого из этих доменов и использовать их для выполнения ваши изменения.

Смежные вопросы