Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

Как получить имя и домен пользователя через Active Directory?

Подскажите пожалуйста каким образом можно получить данные о пользователи через Active Directory?
Если есть какие-то статьи по данному вопросу, можно получить их в комментариях?
А если вообще не сложно, можно пример кода?


Ответ

С помощью следующего кода удалось решить эту задачу.
public static void main(String[] args) throws LdapException, NamingException{ Hashtable ldapEnv = new Hashtable(11); ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); ldapEnv.put(Context.PROVIDER_URL, "ldap://ad.domain.com:389"); ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); ldapEnv.put(Context.SECURITY_PRINCIPAL, "login@domain.com"); ldapEnv.put(Context.SECURITY_CREDENTIALS, "password"); InitialDirContext ldapContext = new InitialDirContext(ldapEnv); // Create the search controls SearchControls searchCtls = new SearchControls(); // Specify the attributes to return String returnedAtts[]={"sn","givenName", "samAccountName","mail"}; searchCtls.setReturningAttributes(returnedAtts); // Specify the search scope searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); // specify the LDAP search filter String searchFilter = "(&(objectCategory=user)(objectClass=person)(samAccountName=userName))"; // Specify the Base for the search String searchBase = "cn=users,dc=domain,dc=com"; // initialize counter to total the results int totalResults = 0; // Search for objects using the filter NamingEnumeration answer = ldapContext.search(searchBase, searchFilter, searchCtls); // Loop through the search results while (answer.hasMoreElements()) { javax.naming.directory.SearchResult sr = answer.next(); totalResults++; System.out.println(">>>" + sr.getName()); Attributes attrs = sr.getAttributes(); System.out.println(">>>>>>" + attrs.get("samAccountName")); System.out.println(">>>>>>" + attrs.get("mail")); //System.out.println(">>>>>>" + attrs.get("url"));
} }

Комментариев нет:

Отправить комментарий