GroupOfNamesでオブジェクトクラスinetOrgPersonを使用するLDAPでユーザーを作成しようとしています(属性 'member'を使用できるように)が、どの組み合わせを試しても許可されません。 'member'属性を使用する正しい方法は何ですか?
これは、Apache DirectoryStudioを介して追加しようとしたときに表示されるエラーメッセージです。
Error while creating entry
- [LDAP: error code 65 - OBJECT_CLASS_VIOLATION: failed for MessageType : ADD_REQUES
Java.lang.Exception: [LDAP: error code 65 - OBJECT_CLASS_VIOLATION: failed for MessageType : ADD_REQUEST
Message ID : 113
Add Request :
Entry
dn[n]: [email protected],o=test,ou=tenant,dc=test,dc=com
objectClass: groupOfNames
objectClass: organizationalPerson
objectClass: person
objectClass: top
objectClass: inetOrgPerson
uid: [email protected]
member: cn=user,ou=role,dc=test,dc=com
sn: sadsadsad
cn: sdsadsad
: ERR_61 Entry [email protected],o=test,ou=tenant,dc=test,dc=com contains more than one STRUCTURAL ObjectClass: [OBJECT_CLASS ( 2.5.6.9
NAME 'groupOfNames'
DESC RFC2256: a group of names (DNs)
SUP 'top'
STRUCTURAL
MUST ( 'cn' $ 'member' )
MAY ( 'businessCategory' $ 'seeAlso' $ 'owner' $ 'ou' $ 'o' $ 'description' )
)
, OBJECT_CLASS ( 2.16.840.1.113730.3.2.2
NAME 'inetOrgPerson'
DESC RFC2798: Internet Organizational Person
SUP 'organizationalPerson'
STRUCTURAL
MAY ( 'audio' $ 'businessCategory' $ 'carLicense' $ 'departmentNumber' $ 'displayName' $ 'employeeNumber' $ 'employeeType' $ 'givenName' $ 'homePhone' $ 'homePostalAddress' $ 'initials' $ 'jpegPhoto' $ 'labeledURI' $ 'mail' $ 'manager' $ 'mobile' $ 'o' $ 'pager' $ 'photo' $ 'roomNumber' $ 'secretary' $ 'uid' $ 'userCertificate' $ 'x500UniqueIdentifier' $ 'preferredLanguage' $ 'userSMIMECertificate' $ 'userPKCS12' )
)
]]
at org.Apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.checkResponse(DirectoryApiConnectionWrapper.Java:1280)
at org.Apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.access$600(DirectoryApiConnectionWrapper.Java:109)
at org.Apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper$6.run(DirectoryApiConnectionWrapper.Java:928)
at org.Apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.runAndMonitor(DirectoryApiConnectionWrapper.Java:1175)
at org.Apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.checkConnectionAndRunAndMonitor(DirectoryApiConnectionWrapper.Java:1109)
at org.Apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.createEntry(DirectoryApiConnectionWrapper.Java:950)
at org.Apache.directory.studio.ldapbrowser.core.jobs.CreateEntryRunnable.createEntry(CreateEntryRunnable.Java:224)
at org.Apache.directory.studio.ldapbrowser.core.jobs.CreateEntryRunnable.run(CreateEntryRunnable.Java:124)
at org.Apache.directory.studio.connection.ui.RunnableContextRunner$1.run(RunnableContextRunner.Java:112)
at org.Eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.Java:121)
[LDAP: error code 65 - OBJECT_CLASS_VIOLATION: failed for MessageType : ADD_REQUEST
Message ID : 113
Add Request :
Entry
dn[n]: [email protected],o=test,ou=tenant,dc=test,dc=com
objectClass: groupOfNames
objectClass: organizationalPerson
objectClass: person
objectClass: top
objectClass: inetOrgPerson
uid: [email protected]
member: cn=user,ou=role,dc=test,dc=com
sn: sadsadsad
cn: sdsadsad
: ERR_61 Entry [email protected],o=test,ou=tenant,dc=test,dc=com contains more than one STRUCTURAL ObjectClass: [OBJECT_CLASS ( 2.5.6.9
NAME 'groupOfNames'
DESC RFC2256: a group of names (DNs)
SUP 'top'
STRUCTURAL
MUST ( 'cn' $ 'member' )
MAY ( 'businessCategory' $ 'seeAlso' $ 'owner' $ 'ou' $ 'o' $ 'description' )
)
, OBJECT_CLASS ( 2.16.840.1.113730.3.2.2
NAME 'inetOrgPerson'
DESC RFC2798: Internet Organizational Person
SUP 'organizationalPerson'
STRUCTURAL
MAY ( 'audio' $ 'businessCategory' $ 'carLicense' $ 'departmentNumber' $ 'displayName' $ 'employeeNumber' $ 'employeeType' $ 'givenName' $ 'homePhone' $ 'homePostalAddress' $ 'initials' $ 'jpegPhoto' $ 'labeledURI' $ 'mail' $ 'manager' $ 'mobile' $ 'o' $ 'pager' $ 'photo' $ 'roomNumber' $ 'secretary' $ 'uid' $ 'userCertificate' $ 'x500UniqueIdentifier' $ 'preferredLanguage' $ 'userSMIMECertificate' $ 'userPKCS12' )
)
]]
技術的な理由は、groupOfNames
とperson
objectClassの両方が相互に排他的であるためです。これらは両方とも構造クラスですが、従属関係がないため、異なるobjectClassチェーンになり、 RFC 4512 :に従います。
オブジェクトまたはエイリアスエントリは、最も従属するオブジェクトクラスとして単一の構造オブジェクトクラスを持つ、正確に1つの構造オブジェクトクラススーパークラスチェーンによって特徴付けられます。
グループにはメンバーがいますが、人はグループではなく、グループのようなメンバーを持つことはできません。
私の知る限り、通常は人をグループのメンバーにし、LDAPサーバーは、オブジェクトが属するグループを簡単に取得するための逆ルックアップマッピングを維持する内部関数を提供します。仮想属性は、通常はmemberOf
属性。 ApacheDSはこれをサポートしない可能性があります( まだ )。
言い換えると、LDAPオブジェクトが属するグループはオブジェクト自体のプロパティではなく、手動でそれを維持しようとすることすら望まないはずです。