我正在使用ApacheDS作为LDAP服务器。我需要一些组来管理不同应用程序的权限。例如,一个名为“jira-users”的组,可以登录jira。所以我需要一个属性,我可以存储用户的成员组。我正在使用名为inetOrgPerson的objectClass,它似乎可以存储用户。
从过去我正在处理的Active Directory中,我记得一个名为 memberOf 的属性。似乎这是AD特定的,因为inetOrgPerson类有一个名为 member 的属性。根据文档,它也是如此:存储用户所在的组。但是当我尝试将其添加到inetOrgPerson对象时,我在Apache Directory studio中收到以下错误:
警告!根据方案不允许此属性! 你还想用吗?
当我尝试按是时,我得到以下异常:
FehlerbeimAusführendesLDIF - [LDAP:错误代码65 - OBJECT_CLASS_VIOLATION:MessageType失败:MODIFY_REQUES java.lang.Exception:[LDAP:错误代码 65 - OBJECT_CLASS_VIOLATION:MessageType失败:MODIFY_REQUEST 消息ID:262 修改请求 对象:'cn = Testuser,ou = user,dc = example,dc = com' 修改[0] 操作:添加 修改成员:cn = Testgruppe,ou = user,dc = example,dc = comorg.apache.directory.api.ldap.model.message.ModifyRequestImpl @ 868031e2: ERR_277属性成员未在entryClasses的条目中声明 cn = Testuser,ou = user,dc = example,dc = com] at org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.checkResponse(DirectoryApiConnectionWrapper.java:1268) 在 org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.access $ 9(DirectoryApiConnectionWrapper.java:1236) 在 org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper $ 4.run(DirectoryApiConnectionWrapper.java:716) 在 org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.runAndMonitor(DirectoryApiConnectionWrapper.java:1163) 在 org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.checkConnectionAndRunAndMonitor(DirectoryApiConnectionWrapper.java:1099) 在 org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.modifyEntry(DirectoryApiConnectionWrapper.java:738) 在 org.apache.directory.studio.ldapbrowser.core.jobs.ImportLdifRunnable.importLdifRecord(ImportLdifRunnable.java:515) 在 org.apache.directory.studio.ldapbrowser.core.jobs.ImportLdifRunnable.importLdif(ImportLdifRunnable.java:272) 在 org.apache.directory.studio.ldapbrowser.core.jobs.ExecuteLdifRunnable.executeLdif(ExecuteLdifRunnable.java:157) 在 org.apache.directory.studio.ldapbrowser.core.jobs.ExecuteLdifRunnable.run(ExecuteLdifRunnable.java:123) 在 org.apache.directory.studio.ldapbrowser.core.jobs.UpdateEntryRunnable.run(UpdateEntryRunnable.java:59) 在 org.apache.directory.studio.connection.ui.RunnableContextRunner $ 1.run(RunnableContextRunner.java:116) 在 org.eclipse.jface.operation.ModalContext $ ModalContextThread.run(ModalContext.java:119)
[LDAP:错误代码65 - OBJECT_CLASS_VIOLATION:失败 MessageType:MODIFY_REQUEST消息ID:262 修改请求 对象:'cn = Testuser,ou = user,dc = example,dc = com' 修改[0] 操作:添加 修改成员:cn = Testgruppe,ou = user,dc = example,dc = comorg.apache.directory.api.ldap.model.message.ModifyRequestImpl @ 868031e2: ERR_277属性成员未在entryClasses的条目中声明 CN = TESTUSER,OU =用户,DC =例如,DC = COM]
我尝试使用ldapadd添加它,如此处所述http://morenews.blogspot.de/2010/12/adding-active-directory-properties-to.html。这给了我没有错误,当我看到ou = schema,cn = other,ou = objectClasses我看到我的插入值。但是当我创建一个新的inetOrgPerson时,没有可能使用它!我做错了什么?
答案 0 :(得分:0)
实际上,member
属性类型不存储用户所属的组#34;相反,它包含列表或组中对象的可分辨名称。
inetOrgPerson
对象类不会也不应该拥有任何"成员"属性,groupOfNames
确实甚至需要它,因为它代表了一组存储在" member"中的命名对象。属性。
我想你想要的是将 memberOf 属性添加到inetOrgPerson。为此,您需要定义" memberOf"属性类型并编辑模式中的inetOrgPerson对象类。您必须首先添加属性类型,因为对象类引用它。