我想使用java代码从活动目录中获取特定用户的所有属性。例如:如果我输入一个电子邮件ID([email protected]),那么我怎样才能获取用户的所有属性的电子邮件ID为[email protected]如何使用java代码从Active Directory中获取用户的所有属性
我是JNDI API的新手。请帮我..
我想使用java代码从活动目录中获取特定用户的所有属性。例如:如果我输入一个电子邮件ID([email protected]),那么我怎样才能获取用户的所有属性的电子邮件ID为[email protected]如何使用java代码从Active Directory中获取用户的所有属性
我是JNDI API的新手。请帮我..
尝试用下面的代码:
private static String ldapUrl = "ladp//url:port";
private static String contextFactory = "com.sun.jndi.ldap.LdapCtxFactory";
private static String securityAuthType = "simple";
private static String securityPrincipal = "your service account";
private static String securityCredentials="password";
public static void main(String[] args) {
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
env.put(Context.PROVIDER_URL, ldapUrl);
env.put(Context.SECURITY_AUTHENTICATION, securityAuthType);
env.put(Context.SECURITY_PRINCIPAL, securityPrincipal);
env.put(Context.SECURITY_CREDENTIALS, securityCredentials);
DirContext context = new InitialDirContext(env);
SearchControls ctrl = new SearchControls();
ctrl.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration enumeration = context.search("dc=xxx,dc=com", query, ctrl);
while (enumeration.hasMore()) {
SearchResult result = (SearchResult) enumeration.next();
Attributes attribs = result.getAttributes();
System.out.println("Attributes:"+attribs);
NamingEnumeration<String> attribsIDs = attribs.getIDs();
System.out.println(attribsIDs);
// loop on attributes
StringBuffer output = new StringBuffer();
int iAttr = 0;
while (attribsIDs.hasMore()) {
String attrID = attribsIDs.next();
System.out.println("AttributeId:"+ iAttr+" "+attrID);
NamingEnumeration values = ((BasicAttribute) attribs.get(attrID)).getAll();
System.out.println("Naming Enumertaion Values"+ values);
感谢您的帮助... –
此代码对您有用吗?或者您需要任何其他信息? –
尝试用以下建议代码。在代码的最后添加一些其他字段 –