package com.ssc.qe.dac.util;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import com.ssc.qe.dac.model.User;
public class LdapInfo {
//str表示查询的参数
public static User getUser(String username,String password,String str){
User user=new User();
//设置LDAP的参数
Hashtable<String, String> ldapEnv = new Hashtable<String, String>();
ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");//使用的环境
ldapEnv.put(Context.PROVIDER_URL, "ldap://corp.statestr.com:389");//LDAP的根路径
ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");//验证方式
ldapEnv.put(Context.SECURITY_PRINCIPAL, username+"@CORP");//用户名
ldapEnv.put(Context.SECURITY_CREDENTIALS,password);//密码
//获取连接
DirContext dirContext=null;
try{
dirContext = new InitialDirContext(ldapEnv);
SearchControls searchControls = new SearchControls();
//返回元素的结果集。
String filterProperties[] = { "cn", "mail", "samAccountName" };
searchControls.setReturningAttributes(filterProperties);
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
//过滤数据的条件,根据具体情况而定
String searchFilter = "(|(sAMAccountName="+str+")(cn="+str+")(mail="+str+"))";
String searchBase = "DC=corp,DC=statestr,DC=com";
//执行查找
NamingEnumeration<SearchResult> answer = dirContext.search(searchBase,searchFilter,searchControls);
int totalResults = 0;
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult) answer.next();
totalResults++;
Attributes attrs = sr.getAttributes();
//获得指定的结果
String email=attrs.get("mail").get().toString();
String LanId=attrs.get("samAccountName").get().toString();
String userName=attrs.get("cn").get().toString();
user.setLanId(LanId);
user.setUserName(userName);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
dirContext.close();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return user;
}
// public static void main(String[] args) {
// System.out.println(LdapInfo.getUser("用户名","密码","条件"));
// }
}
Java操作LDAP的基本方法
最新推荐文章于 2021-12-18 20:34:05 发布