Java操作LDAP的基本方法

来源:互联网 发布:初学者学linux 编辑:程序博客网 时间:2024/06/07 04:44
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("用户名","密码","条件"));//              }        }

0 0