Подскажите пожалуйста каким образом можно получить данные о пользователи через 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"));
}
}
Комментариев нет:
Отправить комментарий