2

我正在尝试向目录服务器数据库添加一个条目。这些是我要插入的值:

userName=[ben@gmail.com]
driverEmail=[ben@gmail.com]
driverPassword=[ben]
firstName=[Ben]
lastName=[Hur]
newsletter=[false]

我得到了这个例外:

SEVERE: Cannot create new LDAP entry
LDAPException(resultCode=object class violation, errorMessage='Entry mwUniqueIdentifier=5f9e7597-8a5f-42b0-985b-7d196040689e,ou=People,dc=mobilewarrio
r,dc=com violates the Directory Server schema configuration because it includes     multiple conflicting structural objectclasses inetOrgPerson and mwUser
Account.  Only a single structural objectclass is allowed in an entry')

谁能告诉我它有什么问题。

4

1 回答 1

4

您没有确切显示您将如何插入这些值,因此很难过于具体。但是,例外情况非常明显。

您尝试将inetOrgPerson对象类和mwUser对象类都分配给条目,这不起作用,因为它们都被定义为结构对象类并且都没有从另一个继承(很可能mwUser被定义为结构对象类,因为您的架构没有将其指定为一个AUXILIARYABSTRACT对象类)。

根据RFC 4512

对象或别名条目的特征在于恰好有一个结构对象类超类链,该链具有单个结构对象类作为最从属的对象类。

有两个可能的修复应该涉及对 LDAP 模式的简单更改:

  1. 如果您希望所有mwUser对象都是inetOrgPerson对象,只需声明mwUser一个类似的子对象类inetOrgPerson(取自OpenLDAP 文档):

    objectclass ( 1.1.2.2.2 NAME 'myPerson' DESC 'my person' SUP inetOrgPerson MUST (myUniqueName $ givenName) MAY myPhoto)

在这种情况下,您只需将mwUser对象类分配给您的条目。

  1. 如果您不希望所有mwUser对象都是inetOrgPerson对象,那么通过指定它是一个辅助对象类来声明它是一个 mixin,如下所示:

    objectclass ( 1.1.2.2.1 NAME 'myPhotoObject' DESC 'mixin myPhoto' AUXILIARY MAY myPhoto )

在这种情况下,您必须将inetOrgPerson(或另一个结构对象类)以及mwUser对象类都分配给对象。

于 2012-07-10T17:04:09.053 回答