package com.norteksoft.acs.ldap.impl;
import java.util.ArrayList;
import java.util.List;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.LdapContext;
import com.norteksoft.acs.ldap.LdapService;
public class ApacheDsService extends LdapService{
private static String returnedAtts[] = {
"uid", // 登录名
"cn", // 用户名
"mail", // email
"telephoneNumber" // 电话
};
public ApacheDsService(String adminName, String password, String ldapUrl) {
super(adminName, password, ldapUrl);
}
public List<LdapUser> getAllUser(){
LdapContext ldatCtx = initialLdap();
SearchControls searchCtls = new SearchControls();
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String searchFilter="objectClass=person";
String searchBase = "o=nortek";
searchCtls.setReturningAttributes(returnedAtts); // 设置返回属性集
try {
NamingEnumeration<SearchResult> answer = ldatCtx.search(searchBase, searchFilter, searchCtls);
List<LdapUser> users = new ArrayList<LdapUser>();
LdapUser user = null;
while (answer.hasMoreElements()) {
SearchResult sr = answer.next();
Attributes attrs = sr.getAttributes();
user = new LdapUser();
user.setUserDn(sr.getName());
users.add(user);
user.setUsername(getAttributeValue(attrs, "uid"));
user.setName(getAttributeValue(attrs, "cn"));
if(user.getUsername() == null) user.setUsername(user.getName());
user.setEmail(getAttributeValue(attrs, "mail"));
user.setTelephone(getAttributeValue(attrs, "telephoneNumber"));
}
return users;
} catch (NamingException e) {
logger.error(" get all user error. ", e);
return null;
} finally{
closeLdap(ldatCtx);
}
}
public static void main(String[] args) {
ApacheDsService ad = new ApacheDsService("uid=admin,ou=system", "12345", "ldap://192.168.1.134:389");
List<LdapUser> users = ad.getAllUser();
System.out.println(users);
System.exit(0);
}
}