问题描述
关于实时同步 AD域中组织架构信息
问题出现的环境背景及自己尝试过哪些方法
我尝试过一些网上的方案,但是并不能得到满意的效果。
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
package com.joyce.itext.main;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
/**
* @Description:拉取AD域账户
*/
public class LdAPTest {
public static void main(String[] args) {
Properties env = new Properties();
String adminName = "administrator@2003.com";//username@domain
String adminPassword = "admin";//password
String ldapURL = "LDAP://10.10.2.153:389";//ip:port
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "simple");//"none","simple","strong"
env.put(Context.SECURITY_PRINCIPAL, adminName);
env.put(Context.SECURITY_CREDENTIALS, adminPassword);
env.put(Context.PROVIDER_URL, ldapURL);
try {
LdapContext ctx = new InitialLdapContext(env, null);
SearchControls searchCtls = new SearchControls();
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String searchFilter = "(&(objectCategory=person)(objectClass=user)(name=*))";
String searchBase = "DC=2003,DC=com";
String returnedAtts[] = {"memberOf"};
searchCtls.setReturningAttributes(returnedAtts);
NamingEnumeration answer = ctx.search(searchBase, searchFilter,searchCtls);
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult) answer.next();
System.out.println("<<<:: sr.getname>>>>");
}
ctx.close();
}catch (NamingException e) {
e.printStackTrace();
System.err.println("Problem searching directory: " + e);
}
}
}
你期待的结果是什么?实际看到的错误信息又是什么?
我希望有做过的小伙伴能够提供思路,有相关源码地址是最好的。
再尝试了后,出现了以下报错信息:
LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1