1

コンテクスト

LDAPサーバーからアプリケーションにメンバーをインポートするときに、グループメンバーシップフィルタリングを追加します。

(以前は、特定のldap「ベースDN」からすべてのメンバーをインポートしました。現在、管理者は特定のグループ、つまりベースDNのメンバー「Sales」と「HR」に制限できます)。

私たちのアプリケーションは以下をサポートします:

  • SunONE

  • Active Directory

また、動的グループではなく、静的グループのみをサポートする予定です。

どのようにそれをしただろうか

以前は、2つのルックアップを使用して、この新しい機能のためにメンバーをデータベースに複製していました。

  1. baseDNのすべてのメンバーを検索します
  2. グループ名がリストに含まれているすべてのグループ(メンバーを含む)を検索します(例:「Sales」または「HR」)。「どのユーザーがどのグループに属しているか」、つまり「グループメンバー」属性(SunONEでは「uniqueMember」、ActiveDirectoryでは「member」)を使用して、マップを介してプログラムで追跡します。
  3. #1と#2の結果を交差させて、「メンバーにインポート」を取得します

MemberOf / IsMemberOfはクエリとロジックを減らすことができますか?

簡単なインターネット調査で、SunONEとActiveDirectoryには、「このユーザーが属するグループ」を識別する属性(isMemberOf / memberOf)があることがわかりました。

理論的には、上記のロジックを1つのLDAPクエリに簡略化できます。

  1. いずれかのグループのメンバーであるbaseDNのすべてのメンバーを検索します

MemberOf / IsMemberOfはクエリとロジックを減らすことができますか?

問題を知っている:-memberOf /isMemberOfは静的グループのみをサポートします-ネストされたグループはサポートしません

質問

  • memberOf / IsMemberOfを使用したこのアプローチは機能しますか?
  • 注意点はありますか?
  • OpenLDAPや他のサーバーはどうですか?それらはすべてそのような属性をサポートしていますか?(OpenLDAPにはmemberOf "overlay"があるようですが、管理者は明示的に有効にする必要があります)

参照

SunOne: http ://docs.oracle.com/cd/E19575-01/820-2763/bcajq/index.html

Active Directory: http: //msdn.microsoft.com/en-us/library/ms677943.aspx

関連するSOの質問: ユーザーがグループのメンバーであるかどうかをテストするためのLDAPクエリを作成するにはどうすればよいですか?

LDAPのmemberOfとgroupMembership(Liferay)

4

2 に答える 2

2
Will this approach using memberOf/IsMemberOf work?

警告に従って機能します。

Any caveats?

OpenLDAP実装と同じように機能する場合、memberOf属性は、有効化された後に作成されたエントリに対してのみ機能します。「追いつく」ことはありません。

What about OpenLDAP or other servers? do they all support such an attribute. (I see that OpenLDAP has memberOf "overlay", but an

管理者は明示的に有効にする必要があります)

LDAPサーバーのルートDNに問い合わせて、その機能をサポートしているかどうかを確認できます。あなたはOpenLDAPのこれのサポートについて正しいです。

于 2012-03-16T04:02:12.110 に答える
0

Sun ONEと話すことはできませんが、Active DirectoryはユーザーからのmemberOf属性をサポートしており、クエリを実行できます。属性は、ユーザーが属するグループのdistinguishedNameを含む複数値の属性です。

とはいえ、グループをdnでクエリする必要があり、その一部としてワイルドカードマッチングを使用することはできません。これはネストされたグループをネイティブにサポートしていませんが、必要に応じて、objectCategoryをクエリ属性に追加し、「このメンバーが別のグループである場合は、ルックアップを繰り返します」というチェックを行います。

グループ構造にループがある場合、これはすべて地獄に行きますが、他の多くのこともそうなると確信しています。ADはそれを防ぐことができます。

于 2012-03-27T14:02:54.617 に答える