您的位置:首页 > 其它

微软操作微软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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐