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.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:
Postar um comentário