Java:连接到Active Directory(AD)?

时间:2011-12-16 19:55:46

标签: java active-directory connect

我正在尝试与AD联系。我曾尝试使用此代码进行连接,但它似乎根本没有连接。我很抱歉没能比这更具体,但这只是我所知道的。什么都没发生。我已经删除了我认为是这个类的非必要部分,其中处理结果,因为在这一点上根本没有任何结果可以处理。我在Netbeans中没有任何错误,但是......当我尝试连接时没有任何反应。

发生了什么事?我做错了什么?

import javax.naming.Context; 
import javax.naming.NamingEnumeration; 
import javax.naming.directory.*;
import java.util.Hashtable;
import java.util.*;

public class AD { 

    public static void main(String[] args) { 
        String userName = "xx"; //AD username
        String password = "xx"; //AD password
        Hashtable env = new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, "ldap://192.168.1.102:389/dc=agileworks,dc=com"); //AD Server URL - dc lader til at være "domain content"
        //env.put(Context.SECURITY_AUTHENTICATION, "simple"); //virker ikke nødvendig
                //env.put(Context.SECURITY_PRINCIPAL, new String("agileworks" + "\\" + userName));
        env.put(Context.SECURITY_PRINCIPAL, "agileworks" + "\\" + userName); //måske er tabelnavn\\ ikke nødvendig?
        env.put(Context.SECURITY_CREDENTIALS, password); //password

        DirContext ctx = null; //initialisering
        NamingEnumeration results = null; //initialisering

    }
} 

1 个答案:

答案 0 :(得分:1)

您需要创建一个上下文而不仅仅是变量。你基本上只是将一些数据放入哈希表中,就是这样。

我不是特别了解LDAP,但是使用JNDI,您需要调用new InitialContext()才能实际创建上下文。之后,您可能必须在该上下文上调用方法才能使某些事情发生。

因此,对于LDAP上下文,您需要这样的内容:

DirContext ctx = new InitialLdapContext(env, new Control[0]); 
NamingEnumeration results = ctx.search(....);