web-dev-qa-db-ja.com

フィルターを使用してActive DirectoryのサブOUを回避する方法

Active DirectoryのOUからユーザー情報を取得するアプリケーションがあります。取得するパラメーターは、検索のベースとフィルター文字列です。

情報を取得したいOUがありますが、回避したいサブOUがあります。

欲しかった

OU=People,DC=mydomain,DC=comのユーザー

要らない

OU=Evil,OU=People,DC=mydomain,DC=comのユーザー

これは、インポートを実行するアプリケーションを書き換えてサブOUの検索を停止することで実行できることを知っていますが、検索でLDAPフィルターを使用してこれを行う方法はありますか? (DistinguishedName !contains "Evil")などのように、ユーザーのプロパティでフィルタリングするのではなく、ユーザーへのパスに基づいてユーザーを除外できるもの。

18
DrStalker

.NETでSystem.DirectoryServices.Protocols)を使用している場合は、SearchScopeOneLevelに設定して、People-OUのみを検索することができます(子- OU)。しかし、OU=Good,OU=People,DC=mydomain,DC=comがある場合は機能しません...

2番目のオプションは、People-OUにすべてのサブOU:s(objectClass=organizationalUnit)を照会し、複数の検索リクエストを発行することです。それぞれに1つ(「悪」なものを除く)。

編集: @geoffc-実装するのは本当に難しいでしょう。デフォルトでは、認証されたすべてのユーザーがActive Directory内のすべてのオブジェクトへの読み取りアクセス権を持っています。 Evil OUに "Deny Read"を設定するだけではうまくいきません。認証されたユーザーの読み取り権限は個々のユーザーオブジェクト(この場合)に設定されており、OUに設定されたDeny ACLよりも優先されているためです。基本的に、Evil-OUの各オブジェクトに拒否読み取りACLを設定し、ディレクトリに追加された新しいオブジェクトが同じ拒否権限セットを取得することを常に確認する必要があります。 Active Directoryスキーマを編集して、認証されたユーザーの権限を削除することもできますが、これは他の多くのこと(Exchangeを含む)を破壊し、マイクロソフトではサポートされません。

12
Per Noalt

AFAICT、これはActive DirectoryのLDAPフィルターでは実行できません。他の多くのLDAP実装は拡張可能なマッチングをサポートしていますが、ADはサポートしていません。

ou:dn:=Evil)またはdistinguishedNameのワイルドカードを含むフィルターを推奨するユーザーは、Active Directoryに対してテストしていません。

7
esk

以下はトリックを行います:

(&(objectClass=user)(!(distinguishedName:=%Evil%)))

スキャンして電子メールで送信するためのアドレス帳を作成しているときに、同様の問題に遭遇しました。私は(&(objectClass=user)(!(distinguishedName:=*Evil*)))を試しましたが、一部のMFPは*をワイルドカードとして受け入れませんが、%は受け入れます。

6
Louis Reedijk

http://www.zytrax.com/books/ldap/apa/component.html によると、LDAPコンポーネントフィルターを使用して必要なものを取得することが可能です。ここにあなたが説明するものと一致する例があります:

(&(objectClass=organizationalUnit)(!(ou:dn:=Evil)))

これは、organizationUnitのobjectClassを持つすべてのオブジェクトに一致しますが、ou = Evilに一致するコンポーネントがDNに含まれているオブジェクトはすべて拒否します。

2
Ben Klang

ObjectClasses organizationalUnitおよびその子孫inetOrgPersonを使用すると、属性ouをエントリに含めることができます。 ou属性を値evilou=evilブランチに従属するオブジェクトに追加し、アサーション(!(ou=evil))を検索フィルターに含めて、候補リストからの応答を制限します。 ouという値を持つ属性evilを含まないもの。または、 LDAPアサーション制御 を同じ方法で要求に使用して、ouに値evilが含まれる要求が処理されないようにすることができます。 LDAP準拠のプロフェッショナル品質のディレクトリサーバーは、これらの方法の両方をサポートします。

1
Terry Gardner