对于LDAP,我使用LDAP测试服务器即Forumsys,我们可以在the link中看到Forumsys LDAP的用户和组。
我想从他们的群组中获取用户信息。我在JAVA上观看了一些关于LDAP的视频并试图这样做。但是,我无法得到它们。我的代码返回null。
我该如何解决?获取用户和群组信息的问题在哪里?
这是我的代码:
import javax.naming.*;
import javax.naming.directory.*;
import java.util.Hashtable;
public class LDAPV2 {
public static void main(String[] args) throws NamingException{
Hashtable <String,String> env = new Hashtable<>();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL,"ldap://ldap.forumsys.com:389/dc=example,dc=com");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "uid=boyle,dc=example,dc=com");
env.put(Context.SECURITY_CREDENTIALS, "password");
DirContext context = new InitialDirContext(env);
DirContext groupCx = (DirContext) context.lookup("ou=chemists");
NamingEnumeration <Binding> groups = groupCx.listBindings("");
while (groups.hasMore()){
String bindingName = groups.next().getName();
Attributes groupAttributes = groupCx.getAttributes(bindingName);
Attribute groupName=groupAttributes.get("cn");
System.out.println(groupName);
}
}
}
答案 0 :(得分:1)
ou=chemists
为空。所以它没有子绑定,所以while
循环永远不会执行。
但是它有一些属性,您可以使用以下方法打印:
Attributes groupAttributes = groupCx.getAttributes("");
Attribute groupName = groupAttributes.get("uniqueMember");
System.out.println(groupName);