2016-07-04 13 views
-1

私は現在、DNベースの検索の問題に直面しています。部分的な、繰り返し可能なdn属性の検索

私はクライアントLDAP上で作業するので、構造を変更することはできません。私はreadOnlyフルアクセス権を持っています。

このLDAPでは、ユーザーは許可を得てグループ化されています。

のは、次のUIDを持つ4つの権限想像してみましょう:

まず

uid=jdoe,ou=user,ou=client,ou=fr 
dnPermission=uid=APP2#Admin,ou=permission,ou=client,ou=fr 
dnPermission=uid=APP1#User#other feature,ou=permission,ou=client,ou=fr 
dnPermission=uid=APP3#Admin,ou=permission,ou=client,ou=fr 

第二:、APP2及びAPP3は3つのdiferentsアプリケーション

ある今3ユーザーを想像

uid=APP1#Admin#feature,ou=permission,ou=client,ou=fr 
uid=APP1#User#other feature,ou=permission,ou=client,ou=fr 
uid=APP2#Admin,ou=permission,ou=client,ou=fr 
uid=APP3#Admin,ou=permission,ou=client,ou=fr 

APP1を

uid=jdupont,ou=user,ou=client,ou=fr 
dnPermission=uid=APP1#Admin#feature,ou=permission,ou=client,ou=fr 
dnPermission=uid=APP2#Admin,ou=permission,ou=client,ou=fr 

サード

uid=mhari,ou=user,ou=client,ou=fr 
dnPermission=uid=APP2#Admin#feature,ou=permission,ou=client,ou=fr 
dnPermission=uid=APP3#Admin,ou=permission,ou=client,ou=fr 

各アプリケーションには、多くの権限を持つことができ、許可のリストは、時間内に安定していません。

私の目的は、単一のクエリでAPP1の権限を持つすべてのユーザーを取得することです。

LDAPには24K +ユーザーがあり、アプリケーションには75ユーザーしか関係しないため、すべてのユーザーを取得してフィルタリングできません。

(&(objectclass=people)(dnPermission=uid=APP1*)) 

または

(&(objectclass=people)(dnPermission=APP1*)) 

が、両方は私に0の結果を返します。

私の最初のアイデアは、DNのような文字列とユーザーのフォローのクエリを処理することでした。

が可能ですか? どのようにですか?

NB1:人はいないのテクニカルアカウント

NB2と標準Personクラスのサブクラスである:dnPermissionはDNリンクではなく、フルテキスト属性です。

+0

バックスラッシュは正しくありません。それを除く。 – EJP

+0

これは修正されました。コピー/ペーストの間違いでした。 –

+0

検索文字列内の 'attr'の実際の値は何ですか?サンプル値は何ですか?通常、グループ名はDN値です。 – EJP

答えて

1

私は、objectClass 'People'というものは存在しないと思います。 LDAPのユーザーの標準オブジェクトクラスは「Person」で、そのサブクラスは「organizationalPerson」と「inetOrgPerson」

+0

実際、私はカスタムスキーマを扱います。だからクラスの人は存在しますが、技術的なアカウントではなく自然人だけが含まれています。 反対に、すべてのアカウントが含まれています。 –

+0

dnPermissionにDNの構文がある場合、DistinguishedNameSubString一致規則などのものがないため、フィルタ(dnPermission = xxx *)は未定義でゼロの結果を返します。 DNは平等によってのみ一致させることができます。 –

+0

これは私が恐れていた答えです。 –

関連する問題