微软操作微软AD(LDAP)---链接,查询,添加,删除
2013-03-22 17:26
483 查看
package com.abc.xyz; import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; import javax.naming.directory.BasicAttribute; import javax.naming.directory.BasicAttributes; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import javax.naming.directory.ModificationItem; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; public class LDAPtest { public static void main(String[] args) { String account = "administrator"; String password = "abc"; String baseName = ",cn=users,dc=xyz,dc=abc,dc=com"; Hashtable<String, String> env = new Hashtable<String, String>(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://10.221.204.XXX:389"); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, "cn=" + account +baseName); env.put(Context.SECURITY_CREDENTIALS, password); DirContext ctx = null; try { // 链接ldap ctx = new InitialDirContext(env); System.out.println("ldap认证成功"); // 3.添加节点 String newUserName = "test"; BasicAttributes attrsbu = new BasicAttributes(); BasicAttribute objclassSet = new BasicAttribute("objectclass"); objclassSet.add("top"); objclassSet.add("person"); objclassSet.add("organizationalPerson");//可以添加相应的属性 objclassSet.add("user"); attrsbu.put(objclassSet); attrsbu.put("sn", newUserName); attrsbu.put("displayName", newUserName); ctx.createSubcontext("cn=" + newUserName+baseName, attrsbu); System.out.println("添加成功"); // 5.修改节点 account = "test"; String newDisplayName = "testchange"; ModificationItem modificationItem[] = new ModificationItem[1]; modificationItem[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("displayName", newDisplayName)); ctx.modifyAttributes("cn=" + account+baseName, modificationItem); System.out.println("修改成功"); // 查询节点 SearchControls constraints = new SearchControls(); constraints.setSearchScope(SearchControls.SUBTREE_SCOPE); // constraints.setSearchScope(SearchControls.ONELEVEL_SCOPE); //String searchFilter = "objectClass=User"; // specify the LDAP search filter String searchFilter = "cn=test234"; String searchBase = "dc=xyz,dc=abc,dc=com"; //Specify the Base for the search搜索域节点 NamingEnumeration<SearchResult> en = ctx.search(searchBase,searchFilter, constraints); // 查询所有用户 while (en != null && en.hasMoreElements()) { Object obj = en.nextElement(); if (obj instanceof SearchResult) { SearchResult si = (SearchResult) obj; System.out.println("name: " + si.getName()); Attributes attrs = si.getAttributes(); if (attrs == null) { System.out.println("No attributes"); } else { for (NamingEnumeration<? extends Attribute> ae = attrs.getAll(); ae.hasMoreElements();) { Attribute attr = (Attribute) ae.next(); String attrId = attr.getID(); for (NamingEnumeration<?> vals = attr.getAll(); vals.hasMoreElements();) { System.out.print(attrId + ": "); Object o = vals.nextElement(); if (o instanceof byte[]) System.out.println();// new String((byte[])o) else System.out.println(o); } } } } else { System.out.println(obj); } System.out.println(); } // 4.删除节点 account = "test"; ctx.destroySubcontext("cn=" + account+baseName); System.out.println("删除成功"); } catch (javax.naming.AuthenticationException e) { System.out.println("认证失败"); } catch (Exception e) { System.out.println("认证出错:"); e.printStackTrace(); } if (ctx != null) { try { ctx.close(); } catch (NamingException e) { // ignore } } System.exit(0); } }
相关文章推荐
- 通过LDAP在AD域控上进行添加、删除、修改、查询等各种操作
- 通过LDAP在AD域控上进行添加、删除、修改、查询等各种操作。
- 通过LDAP在AD域控上进行添加、删除、修改、查询等各种操作
- 通过LDAP在AD域控上进行添加、删除、修改、查询等各种操作
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据
- 对XML文件进行的添加、删除、修改、查询操作。
- 【转载】ABAP 对透明表的添加,修改,删除,查询等操作
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 给jqGrid数据行添加修改和删除操作链接(之一)
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据
- cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据
- ABAP 对透明表的添加,修改,删除,查询等操作
- MongoDB与PHP的扩展进行添加、修改、查询、删除等操作基础教程
- C#数据库操作——新建表、查询、删除、添加、更新等
- Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- Xamarin.Android 入门实例(4)之实现对 SQLLite 进行添加/修改/删除/查询操作