Выборка данных из активного каталога LDAP с использованием идентификатора? - PullRequest
0 голосов
/ 08 ноября 2011

Я хочу получить некоторую информацию о пользователе из каталога LDAP Active с помощью идентификатора. вот код, который я пытаюсь подключить и получить его.

SearchControls ctls = new SearchControls();
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration results = ctx.search("DC=erieinsurance,DC=com", "(&(objectCategory=user)(name{0}))", 
                    new Object[]{Id}, // filter arguments
                ctls); // search controls
            }
if (results.hasMoreElements()) {

}

он не возвращает соответствующих значений имени и sn.

Что-то не так в вышеуказанном фильтре? Любые предложения вокруг будут оценены.

1 Ответ

0 голосов
/ 09 ноября 2011

Похоже, вы используете JNDI.

Вот небольшой образец

//Create the initial directory context
LdapContext ctx = new InitialLdapContext(env,null);

//Create the search controls
SearchControls ctls = new SearchControls();

//Specify the attributes to return
String returnedAtts[]={"distinguishedName","CN","sAMAccountName"};
ctls.setReturningAttributes(returnedAtts);

//Specify the search scope
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);

//specify the LDAP search filter
String searchFilter = "(&(objectClass=user)(sAMAccountName="+ theUserToCheck +"))";

//Specify the Base for the search
String searchBase = "DC=erieinsurance,DC=com";

//initialize counter to total the results
int totalResults = 0;

//Search for objects using the filter
NamingEnumeration answer = ctx.search(searchBase, searchFilter, ctls);

//Loop through the search results
while (answer.hasMoreElements()) {
    SearchResult sr = (SearchResult)answer.next();
    totalResults++;
    System.out.println(totalResults + ". " + sr.getName().toString());
}
...