try{
ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, username);
ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, password);
ctx.reconnect(connCtls);
System.out.println(username+" is authenticated");
SearchControls searchCtls = new SearchControls(); // Create the search controls 创建搜索控件
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); // Specify the search scope 指定搜索范围
String returnedAtts[] = { "title","cn","displayname","givenname","mail","department","sn" }; //定制返回属性
searchCtls.setReturningAttributes(returnedAtts); // 设置返回属性集
String searchFilter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName="+username+"))"; // specify the LDAP search filter 指定LDAP搜索筛选器
String searchBase = "DC=askey,DC=com"; // Specify the Base for the search 搜索域节点
// Search for objects using the filter
NamingEnumeration<?> 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());
int totalResults = 0;
while (answer != null && answer.hasMoreElements()) {
SearchResult sr = (SearchResult) answer.nextElement();
System.out.println("************************************************");
System.out.println(sr.getName());
Attributes Attrs = sr.getAttributes();
if (Attrs != null) {
try {
for (NamingEnumeration<?> 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(" ---------------");
// 读取属性值
Enumeration<?> 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(AuthenticationException e){
//System.out.println(username+"is not authenticated");
}catch(NamingException e){
//System.out.println(username+"is not authenticated");
}
运行完报以下错误 麻烦大佬指点下
answer not null
false
Exception in thread "main" java.lang.NullPointerException
at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.getNextBatch(AbstractLdapNamingEnumeration.java:130)
at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.nextAux(AbstractLdapNamingEnumeration.java:258)
at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.nextImpl(AbstractLdapNamingEnumeration.java:249)
at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.next(AbstractLdapNamingEnumeration.java:203)
at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.nextElement(AbstractLdapNamingEnumeration.java:106)
at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.nextElement(AbstractLdapNamingEnumeration.java:40)
at cn.test.LdapADHelper.Authenticate(LdapADHelper.java:98)
at cn.test.LdapADHelper.main(LdapADHelper.java:163)