0

我正在使用 Novell.Directory.Ldap 库在 ldap(Alcatel Omnivista 使用 Oracle Directory Services Enterprise Edition 11.1.1.5)中创建用户。

它已经工作了多年,但是自从 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 中的配置相关?

非常感谢 !!

4

2 回答 2

2

在 LDAP 中,一个属性(例如 objectclass)具有一组值,因此顺序无关紧要。

应用程序不应该依赖于值的顺序,所以我会说这是管理应用程序中的一个错误。

有些服务器确实保留了客户端提供的值的顺序,有些则没有,但我不知道在哪里可以配置行为。

于 2016-02-02T11:13:28.690 回答
1

我设法在创建时更改了对象类,现在应用程序运行良好。尽管如此,我认为该应用程序在某些时候是错误的。

如果有一天有人需要参考代码:

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),
};
于 2016-02-17T15:06:50.713 回答