Ошибка LDAP: неверная цепочка классов структурных объектов (organizUnit / referral) - PullRequest
1 голос
/ 20 января 2012

Я пытаюсь импортировать следующий пример из Учебник по JNDI Oracle в моем экземпляре OpenLDAP с помощью команды:

ldapadd -x -D cn=admin,dc=example,dc=com -W -f refserver.ldif

где refserver.ldif выглядит так:

dn: o=JNDITutorial,dc=example,dc=com
o: JNDITutorial
objectclass: top
objectclass: organization

dn: ou=All, o=JNDITutorial,dc=example,dc=com
ou: All
objectclass: top
objectclass: organizationalunit

dn: ou=People, o=JNDITutorial,dc=example,dc=com
ou: People
objectclass: top
objectclass: organizationalunit
objectclass: referral
ref: ldap://10.97.98.201:389/ou=People,o=JNDITutorial

dn: ou=People, ou=All, o=JNDITutorial,dc=example,dc=com
ou: People
objectclass: top
objectclass: organizationalunit
objectclass: referral
ref: ldap://10.97.98.201:389/ou=People,o=JNDITutorial

dn: ou=NewHires, ou=All, o=JNDITutorial,dc=example,dc=com
ou: NewHires
objectclass: top
objectclass: organizationalunit
objectclass: referral
ref: ldap://10.97.98.201:389/ou=NewHires,o=JNDITutorial

Это приводит к частичному успеху, сообщая следующее:

adding new entry "o=JNDITutorial,dc=example,dc=com"

adding new entry "ou=All, o=JNDITutorial,dc=example,dc=com"

adding new entry "ou=People, o=JNDITutorial,dc=example,dc=com"
ldap_add: Object class violation (65)
    additional info: invalid structural object class chain (organizationalUnit/referral)

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

Заранее спасибо!

1 Ответ

6 голосов
/ 20 января 2012

Объяснение очень простое, когда вы создаете объект в каталоге LDAP, этот объект ДОЛЖЕН быть с SINGLE структурным классом .В вашем случае вы упоминаете два структурных класса organizationalunit и referal.

Правильный способ сделать то, что вы хотите сделать, это использовать структурный класс и вспомогательный класс.

extensibleObject - это вспомогательный класс, который позволяет вам использовать любой атрибут.

Вот пример

dn: ou=MyOU,ou=Monou,dc=societe,dc=com
objectClass: referral
objectClass: top
objectClass: extensibleObject
ou: MyOU
ref:: bGRhcDovLzEwLjk3Ljk4LjIwMTozODkvb3U9UGVvcGxlLG89Sk5ESVR1dG9yaWFsIA==

Примечание: здесь вы можете видеть, что URL-адрес LDAP закодирован вbase64 (представленный: :) лучше делать в формате LDIF. Apache Directory Studio - это продукт с открытым исходным кодом, который позволяет вам тестировать графически OpenLdap (вы найдете внутри конвертера B64), этот инструмент может генерировать ваши файлы LDIF.

enter image description here

...