List all users in an Active Directory group

I run into some difficulties listing all users in Active Directory. I got to the group, but unfortunately I could not get all the users. I am looking for a user Full names, user names, directorate. My code is:

package client; import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingException; import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapContext; import javax.naming.ldap.*; import java.util.Enumeration; import javax.naming.NamingEnumeration; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.directory.*; public class AD1 { public AD1() { super(); } public static String usersContainer = "cn=XX,ou=XX,ou=Groups,dc=XX,dc=XX,dc=XXX"; public static void main(String[] args) { try { LdapContext ctx = null; Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.SECURITY_AUTHENTICATION, "Simple"); //it can be <domain\\userid> something that you use for windows login //it can also be env.put(Context.SECURITY_PRINCIPAL, "username"); // env.put(Context.SECURITY_CREDENTIALS, "password"); try { env.put(Context.SECURITY_CREDENTIALS, "password".getBytes("UTF8")); } catch (java.io.UnsupportedEncodingException e) { /* ignore */ } //in following property we specify ldap protocol and connection url. //generally the port is 389 env.put(Context.PROVIDER_URL, "ldap://IP:PORT"); ctx = new InitialLdapContext(env, null); System.out.println("Connection Successful."); DirContext ctx1 = new InitialDirContext(env); SearchControls ctls = new SearchControls(); String[] attrIDs = { "distinguishedName","cn","name","uid", "sn", "givenname", "memberOf", "samaccountname", "userPrincipalName" }; ctls.setReturningAttributes(attrIDs); ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); //ctls.setSearchScope(SearchControls.ONELEVEL_SCOPE); NamingEnumeration answer = ctx1.search( usersContainer, "(objectClass=user)", ctls ); System.out.print("Out while loop"); while(answer.hasMore()) { System.out.print("while loop11"); SearchResult rslt = (SearchResult)answer.next(); Attributes attrs = rslt.getAttributes(); System.out.println(attrs.get("uid")); ctx1.close(); } } catch(NamingException nex) { System.out.println("Active Directory Connection: FAILED"); nex.printStackTrace(); } } } 

Can someone help.

+4
source share
1 answer

As an active directory, not the real ldap you are talking about, can you help us with more details on the ldap / active directory configuration?
It's hard to help you with the information you give.

Change 1:
is your problem not here?

 while(answer.hasMore()) { System.out.print("while loop11"); SearchResult rslt = (SearchResult)answer.next(); Attributes attrs = rslt.getAttributes(); //System.out.println(attrs.get("uid")); System.out.println(attrs.get("cn")); ctx1.close(); } 
+2
source

Source: https://habr.com/ru/post/1397558/


All Articles