代码之家  ›  专栏  ›  技术社区  ›  samshers

ldap查询搜索筛选器中“&”的重要性

  •  -3
  • samshers  · 技术社区  · 6 年前

    我正在尝试查询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中查询任何类型的infomraiton的文档吗。

    1 回复  |  直到 6 年前
        1
  •  1
  •   user207421    6 年前

    正如EJP在问题注释部分所述,符号只是一个“AND”操作符。评估记录集中的任何记录时,必须满足所有条件。

    sampleFilter = (&condition1(condition2))
    //records having both condition 1 AND condition 2 true will be returned from the directory.
    

    searchFilter分配语句的作用是,它将根据您提供的过滤器进行LDAP搜索。其搜索过滤器将返回与组类型对应的所有对象,并且对象SID=。

    String searchFilter = "(&(objectClass=group)(objectSid=" + sid + "))";
    

    在这种情况下,将返回与目录中的组相对应的所有记录,其sID是作为sID传递的记录。

    对于您的情况,简单地说,searchFilter=(具有sID的组:)。

    文档部分与您使用的目录服务相关。有关详细信息,请参阅文档 Active Directory: LDAP Syntax Filters ,如果您使用的是Microsoft的Active Directory服务。