active-directory - 如何使用筛选器避免Active Directory中的子OU?

标签 active-directory ldap

我有一个从Active Directory的OU中提取用户信息的应用程序。它采用的参数是搜索的基础和过滤字符串。

我有一个要从中提取信息的OU,但是有一个我要避免的子OU:

通缉

OU=People,DC=mydomain,DC=com中的用户

不想要

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

我知道可以通过重写执行导入操作的应用程序来停止它搜索子OU来完成此操作,但是有什么方法可以对搜索使用LDAP过滤器吗?像(DistinguishedName !contains "Evil")或类似的东西,将使我根据用户的路径排除用户,而不是根据用户的属性进行过滤。

最佳答案

如果在.NET中使用System.DirectoryServices.Protocols),则可以将SearchScope设置为OneLevel以仅在People-OU中搜索(而没有子OU)。但是,如果您有任何OU=Good,OU=People,DC=mydomain,DC=com,那将不起作用...

第二种选择是查询People-OU中的所有子OU:(objectClass=organizationalUnit),然后发出多个搜索请求。每个人一个(“邪恶”除外)。

编辑:@geoffc-这将很难实现。默认情况下,所有经过身份验证的用户都具有对Active Directory中所有对象的读取访问权限。仅在Evil OU上设置“拒绝读取”不会解决问题,因为已验证用户的读取权限是在单个用户对象上设置的(在这种情况下),因此优先于在OU上设置的拒绝ACL。本质上,您将必须在Evil-OU中的每个对象上设置“拒绝读取” ACL,并始终确保添加到目录中的新对象获得相同的“拒绝”权限集。您可以编辑Active Directory架构并删除经过身份验证的用户的权限,但这会破坏很多其他事情(包括Exchange),并且Microsoft不支持。

关于active-directory - 如何使用筛选器避免Active Directory中的子OU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1101144/

相关文章:

c# - PrincipalContext.ValidateCredentials 总是返回 FALSE

c# - 我可以从 WindowsPrincipal 获取 Active Directory 属性吗?

.net - 如何使用反射通过属性标签名称设置属性值?

php - 防止 LDAP 函数出现 PHP 警告

c++ - C++ 中的 Windows LDAP 身份验证

linux - 如何将OTRS 5与Microsoft LDAP服务器连接以进行用户身份验证?

powershell - Powershell将用户添加到组

php - 如何在 PHP 中使用 NT 身份验证连接?

syntax - LDAP 语法/语义 : Filter vs. 基本 DN?

java - 使用自定义模式定义的 Spring Ldap 单元测试