我正在尝试查询LDAP / ActiveDirecory服务器以获取用户和组信息。我正在使用搜索过滤器,我无法找到足够的文档。我有兴趣了解"&"在下面的查询中。
String searchFilter = "(&(objectClass=group)(objectSid=" + sid + "))";
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<SearchResult> results = ctx.search(ldapSearchBase, searchFilter, searchControls);
有人可以解释并指出任何有助于理解如何查询任何类型信息的ldap的文档。
答案 0 :(得分:1)
正如EJP在问题评论部分已经说过的那样,符号只是一个&#39; AND&#39;运营商。在评估记录集中的任何记录时,必须满足所有条件。
sampleFilter = (&condition1(condition2))
//records having both condition 1 AND condition 2 true will be returned from the directory.
您的searchFilter分配声明所做的是它将根据您提供的过滤器进行LDAP搜索。其搜索过滤器将返回与groupID类型对应的所有对象,其objectsID =。
String searchFilter = "(&(objectClass=group)(objectSid=" + sid + "))";
在这种情况下,将返回与Directory中的组对应的所有记录,并且其sID是作为sID传递的记录。
对于您的情况,简单来说,searchFilter =(具有sID :)的组。
根据您正在使用的目录服务,文档部分是相关的。如果您使用的是Microsoft的Active Directory服务,请参阅Active Directory: LDAP Syntax Filters的文档。