【问题标题】:Retrieve all sub users when entered a search term in LDAP在 LDAP 中输入搜索词时检索所有子用户
【发布时间】:2015-03-02 17:14:12
【问题描述】:

我正在寻找一个查询,当输入一个名称时,它应该检查是否有任何子员工向该输入的名称报告。如果有,那么它应该返回所有子用户(员工)和子用户向该员工报告的列表。

我写了一个查询,当输入用户名时,它会获取与他关联的所有数据,但我现在很困惑如何只获取用户和子用户和子用户名该报告到该搜索词。

有没有办法用 AD 来做,还是我需要实现 DFS 搜索?如果有任何一个选项,那么请给我一些提示。

    try {
                // Create Initial Context
                LdapContext ctxGC = new InitialLdapContext(env, null);
                // ctxGC.setRequestControls(null);

                String searchFilter = "(&(objectClass=user)(sAMAccountName=" + searchTerm + ")(!(displayName=ADM*)))";
                NamingEnumeration<?> namingEnum = ctxGC.search("OU=User,DC=emea,DC=xyz,DC=biz", searchFilter, getSearchControls());

        Deque<Node> stack = new ArrayDeque<Node>(); // Do I need to implement tree here or is there any other way to get sub users info from LDAP search??



                while (namingEnum.hasMoreElements()) {
                    SearchResult result = (SearchResult) namingEnum.next();
                    Attributes attrs = result.getAttributes();
                    if (attrs != null) {
                        NamingEnumeration ne = attrs.getAll();

                        while (ne.hasMore()) {
                            Attribute attr = (Attribute) ne.next();

                }
            }
}
            namingEnum.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static SearchControls getSearchControls() {
        SearchControls searchCtls = new SearchControls();
        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
        searchCtls.setReturningAttributes(new String[]{"*"});
        return searchCtls;
    }

【问题讨论】:

    标签: java tree active-directory


    【解决方案1】:

    要获取向经理报告的用户列表,我只需要更改搜索过滤器查询并检索经理凭据,然后它会返回向该人报告的所有用户的列表。如果没有用户向他报告,则它不会返回任何内容。

    因此,searchFilter 需要更改如下。

    String searchFilter = "(&(objectClass=user)(manager=CN=Its\\\\, Zaif,OU=xx,OU=xx,OU=StandardUser,OU=xx,DC=emea,DC=xyz,DC=biz) (!(displayName=ADM*)))";
    

    【讨论】:

      猜你喜欢
      • 2014-12-11
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      相关资源
      最近更新 更多