Назад | Перейти на главную страницу

Нарушение класса объекта LDAP: атрибут ou не разрешен в суффиксе?

Я собираюсь создать каталог LDAP. Он используется как инструмент для передачи разрешений пользователей из веб-приложения для доступа к файловой системе WebDav, например добавление пользователя на веб-платформу позволит войти в файловую систему с теми же учетными данными. Никакого другого использования не предполагается. Следующий этот немецкий учебник который поощряет использование атрибутов c, o, ou и т.д. dc, Я настроил следующий суффикс и корень:

suffix                "ou=webtool,o=myOrg,c=de"
rootdn                "cn=ldapadmin,ou=webtool,o=myOrg,c=de"

Сервер запускается, и я могу подключиться к нему Администратор LDAP, который сообщает «Ошибка LDAP: отсутствует объект». Ну, объектов пока нет.

Теперь я хочу создать элементы root и admin из оболочки. Я создал init.ldif файл:

dn: ou=webtool,o=myOrg,c=de
objectclass: dcObject
objectclass: organization
dc: webtool
o: webtool

dn: cn=ldapadmin,ou=webtool,o=myOrg,c=de
objectclass: organizationalRole
cn: ldapadmin

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

server:~ # ldapadd -x -D "cn=ldapadmin,ou=webtool,o=myOrg,c=de" -W -f init.ldif
Enter LDAP Password:
adding new entry "ou=webtool,o=myOrg,c=de"
ldap_add: Object class violation (65)
        additional info: attribute 'ou' not allowed

Я не использую ou где угодно, кроме суффикса, поэтому вопрос: здесь это не разрешено? какой является разрешено здесь?

Существует множество зависимостей для создания элементов, и сообщения об ошибках могут сбивать с толку, если вы не знакомы с концепцией. В objectclass не обязательно dcObject для корневого узла базы данных, как можно догадаться, когда вы прочитаете несколько туториалов. Вместо этого он должен соответствовать типу объекта: здесь для имени, начинающегося с ou=, Это должно быть organizationalUnit. Я нашел эту информацию в эти таблицы. Далее, класс объекта определяет, какие свойства должны и могут быть добавлены в запись. Вот, organizationalUnit должен иметь ou: вход и не должен иметь ни dc: ни o: записи. Таким образом, здоровый init.ldif файл выглядит так:

dn: ou=webtool,o=myOrg,c=de
objectclass: organizationalUnit
ou: LDAP server for my webtool

dn: cn=ldapadmin,ou=webtool,o=myOrg,c=de
objectclass: organizationalRole
cn: ldapadmin

Примечание. На странице также говорится: «Хотя многие объектные классы не показывают ОБЯЗАТЕЛЬНЫХ атрибутов, вы должны (ой) следовать любой иерархии […], чтобы определить, так ли это на самом деле». Я думал, что это будет означать, что моя корневая запись должна содержать обязательные поля для c= и o= (c: и o:соответственно), но это не дело.