Microsoft AD - 否定 OU = LDAP フィルター

Microsoft AD - 否定 OU = LDAP フィルター

私は、いくつかの OU に基づいてユーザーをフィルターする MS AD 用の LDAP フィルターを作成しようとしています (私のケースでは、特定の OU を除外するだけでなく、含めることもできません)。

(&(cn=Testuser1)(|(ou:dn:=Included1)(ou:dn:=Included2)))
(&(cn=Testuser1)(!(ou:dn:=Excluded)))

動作しません。(ou:dn:=Included1)実際の「フォルダ」オブジェクト (以下で * でマークされている) をリストするものをテストしましたが、その下のユーザー (OU を含む DN) はリストされません。複数のユーザーを見つける必要があるため、検索ベースを使用できません。

ou=Included1,dc=example,dc=com *
  cn=Testuser1,ou=Included1,dc=example,dc=com +
ou=Included2,dc=example,dc=com
  cn=Testuser1,ou=Included2,dc=example,dc=com +
ou=Excluded,dc=example,dc=com
  cn=Testuser1,ou=Excluded,dc=example,dc=com - 

上記の 2 つのサンプル フィルターでは、3 つ (- でマーク) ではなく、2 つの Testuser1 エントリ (+ でマーク) を検索します。

しかし、実際にはどれも一致しません。実際のユーザーエントリには、フィルタリングできる属性に他の違いはありません。

ou:dn:=」構文は、名前の最初のコンポーネントが目的のものであるオブジェクトのみを検索し、それ以外のものは検索しないようです...?

答え1

否定的な OU= コンポーネント フィルターは、構築された属性であるため、Microsoft LDAP では機能しないようです (リンクを提供してくれた @semicolon に感謝します)。

ただし、次のように完全な属性値を使用すると機能します。

(&(CN=%u)(!(distinguishedName=CN=%u,OU=Excluded,dc=example,dc=com)))

関連情報