segunda-feira, 20 de outubro de 2008

Como buscar infos de um Usuário do AD com Java

Galera,

Esse código serve para você buscar informações de um usuário específico no Active Directory.

public void getDN(String pUser) throws NamingException, UnsupportedEncodingException{

Hashtable envDC = new Hashtable();
envDC.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
envDC.put(Context.SECURITY_AUTHENTICATION, "simple");
envDC.put(Context.SECURITY_PRINCIPAL,
"CN=admin,CN=Users,DC=yourco,DC=com");//User Admin do AD
envDC.put(Context.SECURITY_CREDENTIALS, "senha");
envDC.put(Context.PROVIDER_URL, "ldap://host:389");
envDC.put(Context.REFERRAL, "follow");
envDC.put("java.naming.ldap.attributes.binary",
"objectGUID objectSid msSFUPassword");

LdapContext ldapContext = new InitialLdapContext(envDC, null);
String searchBase = "OU=Users,DC=yourco,DC=com";//Base da busca
String searchFilter = "(&(objectClass=user)(sAMAccountName=" + pUser+ "))";//Filtro por sAMAccountName ou algum outro
SearchControls searchCtls = new SearchControls();

String[] returnedAtts = { "distinguishedName" }; //Atributos a serem retornados, separados por vírgula

searchCtls.setReturningAttributes(returnedAtts);
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration answer = ldapContext.search(searchBase, searchFilter, searchCtls);

if (answer.hasMoreElements()) {

SearchResult sr = (SearchResult) answer.next();

Attributes attrs = sr.getAttributes();

// obtém o distinguishedName ou outros atributos que vc informou acima

String distinguishedName = (String) attrs.get("distinguishedName").get();

}

}

Desculpem o conteúdo mega técnico...hehehe

Nenhum comentário: