我想从LDAP AD目录中检索所有用户,并将其存储在文件中以进行某些处理。
我正在使用下面的代码来获取所有AD用户,但是它返回No Attributes。

try {
  DirContext ctx = new InitialDirContext(env);
  connected = "true";

  SearchControls constraints = new SearchControls();
  constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
  String[] attrIDs = { "(&(objectClass=*)(objectCategory=*))"};
  constraints.setReturningAttributes(attrIDs);
  NamingEnumeration<SearchResult> answer = ctx.search(ldapDCinfo, "(&(objectClass=*)(objectCategory=*))", constraints);
  while (answer.hasMore()) {
    Attributes attrs = ((SearchResult) answer.next()).getAttributes();
    sendAry[0]= connected;
    System.out.println(attrs.toString());
  }

最佳答案

String[] attrIDs = { "(&(objectClass=*)(objectCategory=*))"};
constraints.setReturningAttributes(attrIDs);


这是无稽之谈。那不是属性ID的数组,而是一个包含一个过滤字符串的数组,并且该过滤字符串已在其他位置指定。

例如,如果要返回surname, givenName, mail,则应输入:

String[] attrIDs = { "surname", "givenName", "mail"};


如果需要所有普通属性,请使用"*"。如果还需要操作属性,请使用:

String[] attrIDs = { "*", "+"};

09-30 17:31