我需要一种有效的方式来读取LDAP中的所有用户。我在Java中有一个超级/root密码
我只需要列出名字就行了。
所有的想法都是值得欣赏的。
发布于 2010-06-07 22:07:03
您可以找到一个很好的代码示例here
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/dc=fraglab,dc=net");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=admin,dc=fraglab,dc=net");
env.put(Context.SECURITY_CREDENTIALS, "yannis");
DirContext ctx = new InitialDirContext(env);
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchControls.setCountLimit(10);
NamingEnumeration<SearchResult> namingEnumeration =
ctx.search("", "(uid=*)", new Object[]{}, searchControls);
while (namingEnumeration.hasMore()) {
SearchResult sr = namingEnumeration.next();
System.out.println("DN: " + sr.getName());
System.out.println(sr.getAttributes().get("uid"));
System.out.println("Password:" + new String((byte[]) sr.getAttributes().get("userPassword").get()));
}
ctx.close();它为Java命名和目录接口JNDI使用LDAP命名服务提供者,并且应该通过小的调整来做你想做的事情(例如,至少放入你的服务器的名称)。documentation for the ldap provider非常好,可以帮助您将其扩展到您的需要。
https://stackoverflow.com/questions/2990085
复制相似问题