使用JAVA从LDAP获取用户信息

时间:2017-10-23 20:59:43

标签: java active-directory ldap

对于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);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您正在查找的目录中

ou=chemists为空。所以它没有子绑定,所以while循环永远不会执行。

但是它有一些属性,您可以使用以下方法打印:

    Attributes groupAttributes = groupCx.getAttributes("");
    Attribute groupName = groupAttributes.get("uniqueMember");
    System.out.println(groupName);