package com.abc;
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.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
public class test2 {
public static void main(String args[]) {
Hashtable<String, String> HashEnv = new Hashtable<String, String>();
String baseName = ",cn=users,dc=abc,dc=com";
String LDAP_URL = "ldap://10.254.xxx.xxx:389"; //LDAP访问地址
String adminName = "cn=administrator" + baseName; //注意用户名的写法
String adminPassword = "abc123"; //密码
HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); //LDAP访问安全级别
HashEnv.put(Context.SECURITY_PRINCIPAL, adminName); //AD User
HashEnv.put(Context.SECURITY_CREDENTIALS, adminPassword); //AD Password
HashEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); //LDAP工厂类
HashEnv.put(Context.PROVIDER_URL, LDAP_URL);
try {
LdapContext ctx = new InitialLdapContext(HashEnv, null);
SearchControls searchCtls = new SearchControls(); //Create the search controls
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); //Specify the search scope
String searchFilter = "objectClass=User"; //specify the LDAP search filter
String searchBase = "dc=cmdi,dc=chinamobile,dc=com"; //Specify the Base for the search//搜索域节点
int totalResults = 0;
String returnedAtts[] = {
"cn", "displayName", "distinguishedName","name", "primaryGroupID",
"pwdLastSet", "sAMAccountName", "sAMAccountType","sn","givenName",
"userAccountControl", "userPrincipalName", "whenChanged", "whenCreated"}; //定制返回属性
searchCtls.setReturningAttributes(returnedAtts); //设置返回属性集
//Search for objects using the filter
NamingEnumeration<SearchResult> answer = ctx.search(searchBase, searchFilter,searchCtls);
if(answer==null||answer.equals(null)){
System.out.println("answer is null");
}else{
System.out.println("answer not null");
}
System.out.println(answer.hasMoreElements());
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult) answer.next();
System.out.println("************************************************");
System.out.println(sr.getName());
Attributes Attrs = sr.getAttributes();
if (Attrs != null) {
try {
for (NamingEnumeration<? extends Attribute> ne = Attrs.getAll(); ne.hasMore(); ) {
Attribute Attr = (Attribute) ne.next();
System.out.println(" AttributeID=" + Attr.getID().toString());
//读取属性值
for (NamingEnumeration<?> e = Attr.getAll(); e.hasMore();totalResults++) {
System.out.println(" AttributeValues=" + e.next().toString());
}
System.out.println(" ---------------");
//读取属性值
NamingEnumeration<?> values = Attr.getAll();
if (values != null) { // 迭代
while (values.hasMoreElements()) {
System.out.println(" AttributeValues=" + values.nextElement());
}
}
System.out.println(" ---------------");
}
}
catch (NamingException e) {
System.err.println("Throw Exception : " + e);
}
}
}
System.out.println("Number: " + totalResults);
ctx.close();
}
catch (NamingException e) {
e.printStackTrace();
System.err.println("Throw Exception : " + e);
}
}
}
java连接微软AD(LDAP)
最新推荐文章于 2024-07-05 11:26:56 发布