java – LDAP:使用过滤器来避免Active Directory中的子CN
我试图查询Active Directory中的几乎所有用户.
我的普通用户在各种OU中,我想要检索它们.但我的系统用户存储在用户CN中,我不想检索它们. 它看起来很像another question,但他们的答案对我没有帮助.我正在使用here提供的提示,但它也没有帮助. 我正在使用JNDI在Active Directory中查询.我的查询是: (&(objectClass=user)(!(cn:dn:=Users))) 这意味着类user的所有对象都不在Users子树中.然而,这个查询仍返回如下内容: CN=__vmware__,CN=Users,DC=SIREDRM,DC=com 那么,为什么那个过滤器不起作用?我怎么能让它工作? 解决方法
使用(!(distinguishedName = *,CN = Users = DC = mydomain,DC = com)),您尝试使用具有DN语法[Object(DS-DN)]的属性,对于这些LDAP属性,您不能使用通配符在LDAP过滤器中.
属性“distinguishedName”: LDAP语法“对象(DS-DN)” 在第二个链接中,您将找到有关禁用通配符的语句. 通常,您可以使用LDAP可扩展匹配规则从子树搜索中排除某些容器,在您的情况下,语法将类似于此 (!(cn:dn:=Users)) 或类似的东西.坏事:AD也不支持这种可扩展的匹配: 因此得出的结论是:在活动目录环境中,您不能使用单个过滤器进行此操作.抱歉. 唯一的解决方案似乎是使用客户端工具. Microsoft提供的脚本将向您展示如何确切地满足您的需求(除了您需要用户,而不是计算机). http://blogs.technet.com/heyscriptingguy/archive/2004/12/07/how-can-i-return-a-list-of-all-my-computers-except-those-in-a-specified-ou.aspx 您可以看到的另一件事是虚拟目录充当AD的代理,这将允许您配置过滤器和权限而无需触及AD. (大部分是从hyphen site复制的) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |