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
- ldap的增删改查基本操作
- jndi操作Ldap进行增删改查
- MyBatis的增删改查基本操作
- Ibatis基本的增删改查操作
- Mybatis 增删改查的基本操作
- mysql基本的增删改查操作
- mysql 基本的增删查改操作
- mysql操作的基本增删改查
- mongoDB-- 基本的操作增删改查
- 单链表的增删改查基本操作
- 双链表的增删改查基本操作
- 栈的增删改查基本操作
- ldap 增删改查
- ldap增删改查
- ldap 增删改查
- 增删查改基本操作
- 基本操作增删改查
- Sql的基本操作之增删查改操作
- asp.net制作网页代码页关于where条件引用控件值的困惑
- Friendship POJ
- 177. [USACO Jan07] 有限制的素数
- Docker镜像使用帮助
- error:LNK2005 已经在*.obj中定义
- ldap的增删改查基本操作
- 下压栈:链表实现
- 在PHP语言中使用JSON和将json还原成数组
- windows下mysql5.7.17安装教程
- Form表单文件上传
- 章文嵩博士和他背后的负载均衡帝国
- Android view 相关一些基础
- Winforms: DataGridView的显示刷新问题
- codeforces Anton and Fairy Tale