mal*_*ere 3 java jndi ldap active-directory
我试图查询Active Directory中的几乎所有用户.我的普通用户在各种OU中,我想要检索它们.但我的系统用户存储在用户CN中,我不想检索它们.
它看起来很像另一个问题,但他们的回答并没有帮助我.我正在使用这里提供的提示,但它也没有帮助.
我正在使用JNDI在Active Directory中查询.我的查询是:
(&(objectClass=user)(!(cn:dn:=Users)))
Run Code Online (Sandbox Code Playgroud)
这意味着类的所有对象user,它们不在Users子树中.然而,这个查询仍返回如下内容:
CN=__vmware__,CN=Users,DC=SIREDRM,DC=com
Run Code Online (Sandbox Code Playgroud)
那么,为什么那个过滤器不起作用?我怎么能让它工作?
使用(!(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))
Run Code Online (Sandbox Code Playgroud)
或类似的东西.坏事:AD不支持这些可扩展的匹配:http: //msdn.microsoft.com/en-us/library/cc223241%28PROT.10%29.aspx 阅读第一段.
因此得出的结论是:在活动目录环境中,您不能使用单个过滤器进行此操作.抱歉.
唯一的解决方案似乎是使用客户端工具.Microsoft提供的脚本将向您展示如何确切地满足您的需求(除了您需要用户,而不是计算机).
您可以看到的另一件事是虚拟目录充当AD的代理,这将允许您配置过滤器和权限而无需触及AD.
(大部分是从连字符网站复制的)
| 归档时间: |
|
| 查看次数: |
4889 次 |
| 最近记录: |