ldap的增删改查基本操作

来源:互联网 发布:python base64 json 编辑:程序博客网 时间:2024/05/19 17:25
public class Factory{    private static Ldap instance;    public synchronized static Ldap creatInstance(){        if(instance==null){            try            {                String className="com.zte.dap.uima.ldap.LdapImpl";                Class<?> c=Class.forName(className);                instance=(Ldap) c.newInstance();                //instance=(Ldap) Class.forName("LdapImpl").newInstance();            }            catch (Exception e)            {                throw new RuntimeException();            }                   }        return instance;    }    }



public interface Ldap{    public void connect() throws NamingException;    public String search(String para) throws NamingException;    public void update() throws NamingException;    public void add() throws NamingException;    public void delete() throws NamingException;    public void close() throws NamingException;}




public class LdapImpl implements Ldap{    private DirContext ds;        @Override    public synchronized void connect() throws NamingException    {        Hashtable<String, Object> env=new Hashtable<String,Object>(11);        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");        env.put(Context.PROVIDER_URL, "ldap://10.43.139.211:389");        env.put(Context.SECURITY_AUTHENTICATION, "simple");        env.put(Context.SECURITY_PRINCIPAL, "cn=root,o=ZTE,c=cn");        env.put(Context.SECURITY_CREDENTIALS, "secret");        ds=new InitialDirContext(env);    }    @Override    public String search(String para) throws NamingException    {        String password=null;        SearchControls searchCtls=new SearchControls();        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);        String searchFilter="uid="+para;        String searchBase="o=ZTE,c=cn";        String returnedAttrs[]={"userPassword"};        searchCtls.setReturningAttributes(returnedAttrs);        NamingEnumeration<SearchResult> entries=ds.search(searchBase, searchFilter, searchCtls);        while(entries.hasMoreElements()){            SearchResult entry=entries.next();            Attributes attrs=entry.getAttributes();            if(attrs!=null){                for(NamingEnumeration<? extends Attribute> names=attrs.getAll();names.hasMore();){                    Attribute attr=names.next();                    for(NamingEnumeration<?> e =attr.getAll();e.hasMore();){                        byte[] s=(byte[]) e.next();                        password=new String(s);                    }                }            }        }        return password;    }    @Override    public void update() throws NamingException    {        ModificationItem[] mods=new ModificationItem[1];        Attribute attr=new BasicAttribute("sn","张三");        mods[0]=new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attr);        ds.modifyAttributes("uid=test,o=founder,c=com", mods);    }    @Override    public void add() throws NamingException    {        Attributes attrs=new BasicAttributes();        attrs.put("uid","test");        attrs.put("sn","test");        attrs.put("cn","test Test");        attrs.put("userPassword", "222222");        Attribute objclass=new BasicAttribute("objectClass");        objclass.add("inetOrgPerson");        attrs.put(objclass);        this.ds.createSubcontext("uid=test,ou=users,o=ZTE,c=cn", attrs);    }    @Override    public void delete() throws NamingException    {        this.ds.destroySubcontext("uid=test,o=founder,c=com");    }    @Override    public void close() throws NamingException    {        ds.close();    }}





public class TestLdap{    public static void main(String[] args) throws NamingException    {        Ldap ldap=Factory.creatInstance();        ldap.connect();        try {            // add uid=test,ou=tester,dc=ibm,dc=com            //ldap.add();            // search uid=test            ldap.search("test");            // update cn with new value of "changed name"            //ldap.update();            // search uid=test to see cn value.            //ldap.search();            // delete uid=test,ou=tester,dc=ibm,dc=com            //ldap.delete();            // search again.            //ldap.search();        } finally {            ldap.close();        }            }}



0 0
原创粉丝点击