0

LDAP サーバーとして ApacheDS を使用しています。別のアプリケーションの権限を管理するためにいくつかのグループが必要です。たとえば、jira にログインできる「jira-users」というグループです。したがって、ユーザーのメンバー グループを格納できる属性が必要です。ユーザーの保存に適していると思われる inetOrgPerson という objectClass を使用しています。

以前取り組んでいた Active Directory から、memberOfという属性を思い出しました。inetOrgPerson クラスにはmemberという属性があるため、これは AD 固有のようです。ドキュメントによると、同じことを行います。ユーザーがメンバーであるグループを保存します。しかし、これを inetOrgPerson オブジェクトに追加しようとすると、Apache Directory studio で次のエラーが発生します。

警告!この属性は、スキームに従って許可されていません! それでも使いたいですか?

yesを押してこれを試すと、次の例外が発生しました。

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: org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper のエントリー cn=Testuser,ou=user,dc=example,dc=com] の objectClasses で ERR_277 属性メンバーが宣言されていませんorg.apache.directory.studio.connection.core の .checkResponse(DirectoryApiConnectionWrapper.java:1268)。io.api.DirectoryApiConnectionWrapper.access$9(DirectoryApiConnectionWrapper.java:1236) at org.apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper$4.run(DirectoryApiConnectionWrapper.java:716) at 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. org.apache.directory.studio.ldapbrowser.core.jobs.ImportLdifRunnable.importLdifRecord(ImportLdifRunnable.java:515) の apache.directory.studio.connection.core.io.api.DirectoryApiConnectionWrapper.modifyEntry(DirectoryApiConnectionWrapper.java:738) 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) の ExecuteLdifRunnable.run(ExecuteLdifRunnable.java:123) org.apache.directory.studio.connection.ui.RunnableContextRunner$1 の.run(RunnableContextRunner.java:116) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)org.apache.directory.studio.ldapbrowser.core.jobs.UpdateEntryRunnable.run(UpdateEntryRunnable.java:59) の ExecuteLdifRunnable.run(ExecuteLdifRunnable.java:123) org.apache.directory.studio.connection.ui.RunnableContextRunner$1 の.run(RunnableContextRunner.java:116) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)org.apache.directory.studio.ldapbrowser.core.jobs.UpdateEntryRunnable.run(UpdateEntryRunnable.java:59) の ExecuteLdifRunnable.run(ExecuteLdifRunnable.java:123) org.apache.directory.studio.connection.ui.RunnableContextRunner$1 の.run(RunnableContextRunner.java:116) at 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' Modification[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属性タイプは「ユーザーがメンバーであるグループを保存する」のではなく、リストまたはグループ内にあるオブジェクトの識別名を含みます。

inetOrgPersongroupOfNamesオブジェクトクラスは、「メンバー」属性に格納されている名前付きオブジェクトのセットを表すため、「メンバー」属性を保持しておらず、保持する必要もありません。

( RFC 4519RFC 2798を参照)

あなたが望むのは、 inetOrgPerson にmemberOf属性を追加することだと思います。そのためには、「memberOf」属性タイプを定義し、スキーマで inetOrgPerson オブジェクト クラスを編集する必要があります。オブジェクト クラスが参照するため、最初に属性タイプを追加する必要があります。

(参照: Apache DS にスキーマ要素を追加する)

于 2016-09-25T14:28:05.877 に答える