0

我使用 ApacheDS 作为 LDAP 服务器。我需要一些组来管理不同应用程序的权限。例如,一个名为“jira-users”的组可以登录到 jira。所以我需要一个可以存储用户成员组的属性。我正在使用名为 inetOrgPerson 的 objectClass,它似乎适合存储用户。

从我过去工作的 Active Directory 中,我记得一个名为memberOf的属性。似乎这是特定于 AD 的,因为 inetOrgPerson 类有一个名为member的属性。根据文档,它的作用相同:存储用户所属的组。但是当我尝试将此添加到 inetOrgPerson 对象时,我在 Apache Directory studio 中收到以下错误:

警告!根据方案,该属性是不允许的!您还想继续使用它吗?

当我尝试按yes时,出现以下异常:

Fehler beim Ausführen des LDIF - [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 属性成员未在 org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper 的条目 cn=Testuser,ou=user,dc=example,dc=com] 的 objectClasses 中声明.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) at org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.checkConnectionAndRunAndMonitor(DirectoryApiConnectionWrapper.java:1099) at org. apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.modifyEntry(DirectoryApiConnectionWrapper.java:738) at 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。在 org.apache.directory.studio.ldapbrowser.core.jobs.UpdateEntryRunnable.run(UpdateEntryRunnable.java:59) 在 org.apache.directory.studio.connection.ui.RunnableContextRunner 执行 ExecuteLdifRunnable.run(ExecuteLdifRunnable.java:123)$1 .run(RunnableContextRunner.java:116) 在 org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)在 org.apache.directory.studio.ldapbrowser.core.jobs.UpdateEntryRunnable.run(UpdateEntryRunnable.java:59) 在 org.apache.directory.studio.connection.ui.RunnableContextRunner 执行 ExecuteLdifRunnable.run(ExecuteLdifRunnable.java:123)$1 .run(RunnableContextRunner.java:116) 在 org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)在 org.apache.directory.studio.ldapbrowser.core.jobs.UpdateEntryRunnable.run(UpdateEntryRunnable.java:59) 在 org.apache.directory.studio.connection.ui.RunnableContextRunner 执行 ExecuteLdifRunnable.run(ExecuteLdifRunnable.java:123)$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 属性成员未在条目 cn=Testuser,ou=user,dc= 的 objectClasses 中声明例如,dc=com]

我尝试像这里描述的那样添加它http://morenews.blogspot.de/2010/12/adding-active-directory-properties-to.html与 ldapadd。这没有给我任何错误,当我查看 ou=schema,cn=other,ou=objectClasses 时,我看到了我插入的值。但是当我创建一个新的 inetOrgPerson 时,就没有可能使用它了!我做错了什么?

4

1 回答 1

-1

实际上,member属性类型并不“存储用户所属的组”,相反,它包含列表或组中对象的可分辨名称。

inetOrgPerson对象类不也不应该拥有任何“成员”属性,groupOfNames因为它表示存储在“成员”属性中的一组命名对象,所以需要它。

(参见RFC 4519RFC 2798

我猜你想要的是将memberOf属性添加到 inetOrgPerson。为此,您需要定义“memberOf”属性类型并在架构中编辑 inetOrgPerson 对象类。您必须先添加属性类型,因为对象类引用它。

(另请参阅:在 Apache DS 中添加模式元素

于 2016-09-25T14:28:05.877 回答