Java操作LDAP的基本方法

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("用户名","密码","条件"));
//              }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值