2011-12-16 162 views
0

我正在尝试与AD联系。我试图用这个代码来连接,但它似乎并没有连接。我很抱歉不能比这更具体,但这只是我所知道的。什么都没发生。我已经删除了我认为是这个类的非必要部分,在那里处理结果,因为在这一点上根本没有任何结果需要处理。我在Netbeans中没有遇到任何错误,但是..当我尝试连接时没有任何反应。Java:连接到Active Directory(AD)?

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

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 

    } 
} 
+0

参考http://stackoverflow.com/questions/389746/ldap-java-library – Egor 2011-12-16 20:08:18

回答

1

您需要创建上下文不仅仅是变量。你基本上只是把一些数据放到散列表中就是这样。

我并不特别了解LDAP,但是使用JNDI,您需要调用new InitialContext()才能真正创建上下文。之后,您可能需要在该上下文中调用一个方法才能使事情发生。

所以在LDAP环境的情况下,你需要的是这样的:

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