加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – LDAP:使用过滤器来避免Active Directory中的子CN

发布时间:2020-12-15 08:32:23 所属栏目:Java 来源:网络整理
导读:我试图查询Active Directory中的几乎所有用户. 我的普通用户在各种OU中,我想要检索它们.但我的系统用户存储在用户CN中,我不想检索它们. 它看起来很像another question,但他们的答案对我没有帮助.我正在使用here提供的提示,但它也没有帮助. 我正在使用JNDI在A
我试图查询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”:
http://msdn.microsoft.com/en-us/library/ms675516%28VS.85%29.aspx

LDAP语法“对象(DS-DN)”
http://msdn.microsoft.com/en-us/library/ms684431%28VS.85%29.aspx

在第二个链接中,您将找到有关禁用通配符的语句.

通常,您可以使用LDAP可扩展匹配规则从子树搜索中排除某些容器,在您的情况下,语法将类似于此

(!(cn:dn:=Users))

或类似的东西.坏事:AD也不支持这种可扩展的匹配:
http://msdn.microsoft.com/en-us/library/cc223241%28PROT.10%29.aspx
阅读第一段.

因此得出的结论是:在活动目录环境中,您不能使用单个过滤器进行此操作.抱歉.

唯一的解决方案似乎是使用客户端工具. 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复制的)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读