开发者社区> 问答> 正文

在组内查找Microsoft AD中组的用户

需要使用域用户组中的java在Microsoft active directory中查找给定用户组的成员。我的 AD结构如下。

reg1.subdomain.domain.com-用户(类型-容器)-域用户(类型-全局安全组)

我写了下面的代码。但是我无法查询“域用户”组内的用户。

public static String ldapUri = "ldap://ldapuri.com:389"; public static String usersContainer = "CN=users,DC=reg1,DC=subdomain,DC=domain,DC=com"; public ArrayList getUserGroups(String username, String password){ Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, ldapUri); env.put(Context.SECURITY_PRINCIPAL, username); env.put(Context.SECURITY_CREDENTIALS, password); try { DirContext ctx = new InitialDirContext(env); SearchControls ctls = new SearchControls(); String[] attrIDs = { "memberOf" }; ctls.setReturningAttributes(attrIDs); ctls.setSearchScope(SearchControls.ONELEVEL_SCOPE);

        NamingEnumeration answer = ctx.search(usersContainer, "(&(objectCategory=group)(cn=Domain Users)(sAMAccountName=username))", ctls);
        while (answer.hasMore()) {
            SearchResult rslt = (SearchResult) answer.next();
            Attributes attrs = rslt.getAttributes();
            try{
                String groups = attrs.get("memberOf").toString();
                String [] groupname = groups.split(":");
                System.out.println(groupname[1]);
            }catch (Exception e){
                System.out.println("no members");
            }
        }
        ctx.close();
    } catch (NamingException e) {
        e.printStackTrace();
    }
    return list;
}

有人可以指出我添加的过滤查询有什么问题吗?

展开
收起
小六码奴 2019-10-09 19:00:53 866 0
1 条回答
写回答
取消 提交回答
  • 假设基本usersContainer设置正确,则只需按以下步骤更改过滤器:

    搜索用户条目时,您需要进行修复objectCategory以过滤用户-而非组。您也可以使用objectClass=inetOrgPerson。

    除非您要搜索的用户条目实际上确实具有该属性cn=Domain Users(这不太可能是通用名),否则不需要此部分。

    因此,以下内容就足够了:

    ctx.search(usersContainer, "(&(objectCategory=person)(sAMAccountName=username))", ctls); 要匹配特定的组成员身份,只需在memberOf属性上添加过滤器,例如。:

    (&(objectCategory=person)(sAMAccountName=username)(memberOf= ))

    2019-10-09 19:02:20
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载