我有一个Web应用程序.对于LDAP,我使用的是Apache Directive Studio.
我想在我的应用程序中获取所有用户及其角色.
我可以使用以下代码获取特定信息.
import java.util.Properties;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
public class DirectorySample {
public DirectorySample() {
}
public void doLookup() {
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
properties.put(Context.PROVIDER_URL, "ldap://localhost:10389");
try {
DirContext context = new InitialDirContext(properties);
Attributes attrs = context.getAttributes("dc=example,dc=com");
System.out.println("ALL Data: " + attrs.toString());
} catch (NamingException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
DirectorySample sample = new DirectorySample();
sample.doLookup();
}
}
我想显示所有用户和角色列表,所以我需要更改查询或其他内容
提前致谢.
解决方法:
您可以使用org.apache.directory.ldap.client.api.LdapConnection进行轻松搜索.
绑定连接后,请搜索连接.循环光标以获取所需的对象.第一个参数应与用户父级的DN匹配.下面的例子只是为了给你一个想法.
EntryCursor cursor = connection.search( "ou=users, dc=example, dc=com", "(objectclass=*)", SearchScope.ONELEVEL, "*" );
while ( cursor.next() )
{
Entry entry = cursor.get();
//play with the entry
}