LDAP错误:结构对象类链无效(organizationalUnit / referral)

时间:2012-01-20 05:47:12

标签: java ldap openldap

我尝试使用命令从我的OpenLDAP实例中的Oracle's JNDI tutorial 导入以下示例:

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)

我正试图从here读取原因。但是,原因和解决方案对我来说有点不清楚。有人可以对此有所了解并建议补救措施吗?

提前致谢!

1 个答案:

答案 0 :(得分:6)

解释非常简单,当您在LDAP目录中创建对象时,此对象必须具有 SINGLE 结构类。在您的情况下,您提到了两个结构类organizationalunitreferal

正确的方法是使用结构类和辅助类。

extensibleObject是一个辅助类,允许您使用所需的任何属性。

这是一个示例

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

备注:在这里您可以看到LDAP URL在base64中编码(由::)引入,最好以LDIF格式执行。 Apache Directory Studio是一个开源产品,允许您测试OpenLdap图形(您可以在B64转换器中找到),此工具可以生成您的LDIF文件。

enter image description here