DrS*_*ker 18 ldap active-directory
我有一个应用程序从Active Directory中的OU中提取用户信息.它所采用的参数是搜索的基础和过滤字符串.
我有一个OU我想从中提取信息,但是我想避免使用子OU:
用户来自 OU=People,DC=mydomain,DC=com
用户来自 OU=Evil,OU=People,DC=mydomain,DC=com
我知道这可以通过重写执行导入以停止搜索子OU的应用程序来完成,但有没有办法在搜索上使用LDAP过滤器?像(DistinguishedName !contains "Evil")或类似的东西,我会根据用户的路径排除用户,而不是过滤用户的属性.
Per*_*alt 12
如果您在.NET中使用System.DirectoryServices(.Protocols),则可以将SearchScopeto 设置OneLevel为仅在People-OU中搜索(并且没有子OU).但如果你有任何OU=Good,OU=People,DC=mydomain,DC=com...... 那就行不通
第二个选项是查询People-OU以查找所有子OU:s(objectClass=organizationalUnit),然后发出多个搜索请求; 每个人一个(除了"邪恶的").
编辑: @geoffc - 这将很难实现.默认情况下,所有经过身份验证的用户都可以读取Active Directory中的所有对象.只是在Evil OU上设置"拒绝读取"将不起作用,因为经过身份验证的用户的读取权限设置在单个用户对象上(在本例中),因此优先于OU上的拒绝ACL设置.您基本上必须在Evil-OU中的每个对象上设置拒绝读取ACL,并始终确保添加到目录的新对象获得相同的拒绝权限集.您可以编辑Active Directory架构并删除Authenticated Users的权限,但这将破坏许多其他内容(包括Exchange),并且不受Microsoft支持.
小智 7
AFAICT,使用活动目录中的LDAP过滤器无法完成此操作。许多其他LDAP实现支持可扩展的匹配,但AD不支持。
推荐使用(ou:dn:=Evil)或通配符的筛选器的用户distinguishedName尚未针对Active Directory进行测试。
小智 6
以下将做到这一点:
(&(objectClass=user)(!(distinguishedName:=%Evil%)))
Run Code Online (Sandbox Code Playgroud)
我在构建扫描到电子邮件的地址簿时遇到了类似的问题.我试过,(&(objectClass=user)(!(distinguishedName:=*Evil*)))但似乎有些MFP不接受*通配符,但他们确实接受了%
| 归档时间: |
|
| 查看次数: |
72331 次 |
| 最近记录: |