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スキーマが構造オブジェクト クラスとして定義されている可能性が高いです)。AUXILIARYまたはABSTRACTオブジェクト クラスとして指定します)。

RFC 4512に従って:

オブジェクトまたは別名エントリは、最も下位のオブジェクト クラスとして単一の構造オブジェクト クラスを持つ正確に 1 つの構造オブジェクト クラス スーパークラス チェーンによって特徴付けられます。

LDAP スキーマへの簡単な変更を伴う 2 つの修正方法があります。

  1. mwUserすべてのオブジェクトをオブジェクトにする場合は、次のようなサブオブジェクト クラスをinetOrgPerson宣言するだけです( OpenLDAP のドキュメントから取得)。mwUserinetOrgPerson

    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 に答える