Изменение объектного класса в ldap
Я создаю пользователей в ldap (Alcatel Omnivista, используя Oracle Directory Services Enterprise Edition 11.1.1.5), используя библиотеку Novell.Directory.Ldap.
Он работал годами, но с момента последнего обновления Omnivista администраторы пытаются решить проблему с пользователем, которого я создаю: объектный класс находится в неправильном порядке.
Где это должно быть
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgperson
objectclass: CDPerson
это:
objectclass: inetOrgPerson
objectclass: organizationalPerson
objectclass: person
objectclass: top
objectclass: CDPerson
и поэтому их управляющие приложения работают неправильно.
Я использую следующий код инициализации:
LdapAttributeSet attributeSet = new LdapAttributeSet
{
new LdapAttribute("objectclass", "inetOrgPerson"),
new LdapAttribute("cn", new[] {cg.Cn, cg.Cn}),
new LdapAttribute("sn", cg.Sn)
};
Мои вопросы:
- Это настоящая проблема? Важен ли порядок? Подразумевает ошибку в приложении администратора.
- Могу ли я изменить объектный класс при создании? Потом? Нужно ли мне?
- Или это связано с конфигурацией в ldap?
Большое спасибо!!
2 ответа
Мне удалось изменить объектный класс во время создания, и теперь приложение работает хорошо. Тем не менее, я думаю, что приложение в какой-то момент неисправно.
Ссылочный код, если кому-нибудь понадобится когда-нибудь:
LdapAttributeSet attributeSet = new LdapAttributeSet
{
new LdapAttribute("objectclass", new[] {"top", "person", "organizationalPerson", "inetorgperson", "CDPerson"}),
new LdapAttribute("cn", new[] {cg.Cn, cg.Cn}),
new LdapAttribute("sn", cg.Sn),
};
В LDAP атрибут (например, объектный класс) имеет набор значений, поэтому порядок не имеет значения.
Приложение не должно полагаться на порядок значений, поэтому я бы сказал, что это ошибка в приложении Admin.
Некоторые серверы сохраняют порядок значений, предоставленных клиентом, некоторые нет, но я не знаю ни одного, где поведение настраивается.