如何使用过滤器,以避免在Active Directory中的子OU?(How to use a fi

2019-06-25 10:50发布

我有拉从OU在Active Directory用户信息的应用。 它需要的参数是用于搜索和过滤字符串基地。

我有一个OU我想拉从信息,但有一个子OU我想避免:

通缉

从用户OU=People,DC=mydomain,DC=com

没曾想

从用户的OU=Evil,OU=People,DC=mydomain,DC=com

我知道,这可能通过改写进行德进口停止搜索子OU的应用程序来完成,但有什么办法上搜索LDAP过滤器来做到这一点? 喜欢的东西( DistinguishedName !contains "Evil" )或类似的,可以让我排除根据用户的路径上向用户,而不是用户的属性过滤。

Answer 1:

如果您使用System.DirectoryServices.Protocols在.NET),你可以设置SearchScopeOneLevel只有在人民-OU(无子OU中)进行搜索。 但是,如果您有任何这是行不通的OU=Good,OU=People,DC=mydomain,DC=com ...

第二个选择是查询人- OU的所有子OU:S( objectClass=organizationalUnit ),然后发出多个搜索请求; 一个用于它们中的每(除了“恶”之一)。

编辑:@geoffc -这将是非常难以实现。 默认情况下,所有通过身份验证的用户具有读取访问Active Directory中的所有对象。 只要设置在邪恶的OU“拒绝读取”不会做的伎俩,因为读取正确的身份验证的用户设置单独的用户对象(在这种情况下),因此拥有在OU设置拒绝ACL的优先级。 您将基本上必须设置在每个邪恶-OU对象的拒绝读取ACL和总是添加到目录确定新的对象会得到相同的拒绝设置权限。 你可以通过修改Active Directory架构,并删除了身份验证的用户权限,但将打破很多其他的事情(包括Exchange),而不是由微软支持。



Answer 2:

AFAICT,这不能与Active Directory中的LDAP过滤器来完成。 许多其他的LDAP实现支持可扩展的匹配,但广告不。

(推荐含有过滤器的用户ou:dn:=Evil )上或通配符distinguishedName没有针对Active Directory测试。



Answer 3:

下面将做的伎俩:

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

我遇到了类似的问题,同时建立一个地址簿用于扫描到电子邮件。 我试过(&(objectClass=user)(!(distinguishedName:=*Evil*)))但似乎有些MFP的不接受*作为通配符,但他们接受%



Answer 4:

据http://www.zytrax.com/books/ldap/apa/component.html ,有可能得到你想要使用的是什么LDAP组件的过滤器。 下面是会匹配你描述一个例子:

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

这符合谁拥有organizationUnit的对象类的所有对象,但拒绝任何其DN包含匹配OU =邪恶的一个组成部分。



Answer 5:

该对象类organizationalUnit和其后代inetOrgPerson允许属性ou存在于一个条目。 一个添加ou与价值属性evil下属的对象ou=evil分支,包括断言(!(ou=evil))的搜索过滤器来限制从候选列表中那些不包含属性响应ou与价值evil 。 可替代地, LDAP断言控制可以在以相同的方式请求中使用,以确保包含一个请求ou与值evil不被处理。 专业品质的目录服务器是LDAP兼容支持这两种方法。



文章来源: How to use a filter to avoid a sub OU in Active Directory?