我使用此代碼檢索ldap用戶的組信息。獲取LDAP用戶組的彈簧
String ldapUri = this.url;
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapUri);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, this.managerDn);
env.put(Context.SECURITY_CREDENTIALS, this.managerPassword);
try {
LdapContext ctx = new InitialLdapContext(env,null);
SearchControls ctls = new SearchControls();
String[] attributes = {"memberOf"};
ctls.setReturningAttributes(attributes);
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<?> answer = ctx.search("dc=abc,dc=com", "(&(objectclass=user)(sAMAccountName=xxxx))", ctls);
**//At this point, I can see the values that I am expecting under entries of answer but hasMoreElements() returns false!**
while(answer.hasMoreElements()) {
SearchResult rslt = (SearchResult) answer.next();
Attributes attrs = rslt.getAttributes();
String groups = attrs.get("cn").toString();
String [] groupname = groups.split(":");
String userGroup = groupname[1];
System.out.println(attrs.get("cn"));
}
}
catch(Exception e) {
e.printStackTrace();
}
answer.hasMoreElements()返回false。但是,我可以在調試時看到我在答案對象條目下預期的值。有人能告訴我我錯過了什麼嗎?
如果這不是正確的方法,我該如何獲得ldap用戶所在的組?
此答案如何幫助解決所述問題? – marthursson
我認爲'hasMoreElements()'的第一次執行可以正常工作,但是attrs.get(「cn」)'將返回null,並且'toString()'將會彈出。這是應該處理的'memberOf'屬性。顯然,我沒有完成答案而提交了答案。抱歉。 – marabu
問題指出hasMoreElements返回false – marthursson