微软操作微软AD(LDAP)---链接,查询,添加,删除

来源:互联网 发布:sql insert into 多条 编辑:程序博客网 时间:2024/06/04 18:11
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 {// 链接ldapctx = 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  filterString 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)elseSystem.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);}}

原创粉丝点击