/**
* 读取域用户信息
* @return user集合
* @throws Exception
*/
public List getDomainInfo(String ip,String adminName,String adminPassword,String port,String ldapBase) throws Exception{
Hashtable<String,String> HashEnv = new Hashtable<String,String>();
List list = new ArrayList();
String ldapurl = "ldap://"+ip+":"+port;
HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); //LDAP访问安全级别
HashEnv.put(Context.SECURITY_PRINCIPAL, adminName); //AD User
HashEnv.put(Context.SECURITY_CREDENTIALS, adminPassword); //AD Password
HashEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); //LDAP工厂类
HashEnv.put(Context.PROVIDER_URL, ldapurl);
try {
LdapContext ctx = new InitialLdapContext(HashEnv, null);
SearchControls searchCtls = new SearchControls();
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String searchFilter = "objectClass=User";
String searchBase = ldapBase;
int totalResults = 0;
String returnedAtts[] = {"displayName","userPrincipalName"}; //定制返回属性
searchCtls.setReturningAttributes(returnedAtts); //设置返回属性集 如果为空则返回全部
//Search for objects using the filter
NamingEnumeration answer = ctx.search(searchBase, searchFilter,searchCtls);
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult) answer.next();
Attributes Attrs = sr.getAttributes();
if (Attrs != null&&Attrs.get("userPrincipalName")!=null) {
UserInfo user = new UserInfo();
if(Attrs.get("userPrincipalName")!=null){
String username = Attrs.get("userPrincipalName")+"";
user.setUsername(username.substring(19,username.length())); //登录名称
}
list.add(user);
}
}
ctx.close();
}catch (NamingException e) {
System.err.println("Throw Exception : " + e);
e.printStackTrace();
}
return list;
}