Добавить запись LDAP в Active Directory через ext / ldap - PullRequest
1 голос
/ 15 декабря 2008

Используя ext / ldap, я пытаюсь добавить записи в Active Directory. Пока я использую только один структурный objectClass, все работает как положено, но как только я пытаюсь добавить запись со вторым вспомогательным objectClass, сервер сообщает об ошибке:

Сервер не хочет выполнять; 00002040: SvcErr: DSID-030F0AA0, задача 5003 (WILL_NOT_PERFORM), данные 0

Работает следующий код:

ldap_add($ldap, 'OU=Test,OU=Test,DC=domain,DC=example,DC=local', array(
    'ou' => 'Test',
    'objectClass' => 'organizationalUnit',
    'l' => 'location'
));

Это не:

ldap_add($ldap, 'OU=Test,OU=Test,DC=domain,DC=example,DC=local', array(
    'ou' => 'Test',
    'associatedDomain' => 'domain',
    'objectClass' => array('organizationalUnit', 'domainRelatedObject'),
    'l' => 'location'
));

То же самое происходит, если я пытаюсь добавить вспомогательный objectClass к существующей записи:

ldap_mod_add($ldap, 'OU=Test,OU=Test,DC=domain,DC=example,DC=local', array(
    'associatedDomain' => 'domain',
    'objectClass' => 'domainRelatedObject'
));

Соответствующее сообщение об ошибке в основном совпадает

Сервер не хочет выполнять; 00002040: SvcErr: DSID-030508F8, задача 5003 (WILL_NOT_PERFORM), данные 0

Поскольку все другие операции обновления и добавления работают, я думаю, что проблема должна быть связана с атрибутом objectClass.

Поскольку мне не хватает опыта работы с Active Directory (я привык к OpenLDAP): Есть ли известные проблемы с объектными классами в Active Directory? Я что-то здесь упускаю? Существуют ли ограничения, запрещающие добавление, например, domainRelatedObject до organizationalUnit? Какого черта здесь происходит; -)?

На всякий случай, если вам интересно: domainRelatedObject присутствует в схеме Active Directory.

Ответы [ 2 ]

2 голосов
/ 16 декабря 2008

Я только что обнаружил, что для добавления динамических (для каждого экземпляра) вспомогательных классов функциональный уровень леса домена должен быть 2003 .

0 голосов
/ 15 декабря 2008

У вас может не быть разрешения на установку атрибута objectClass. Посмотрите, можете ли вы присоединить вспомогательный класс после создания через ADSI Edit . Если вы не можете, сначала исправьте разрешения (проверьте вкладку Свойства в расширенном представлении настроек безопасности)

Я мог бы прямо сейчас присоединить этот конкретный класс к объекту organizUnit в качестве администратора домена; так что в принципе это возможно.

...