如题,用下面的程序段访问Windows 2003 Server的AD,总是出现错误:
package test;import java.util.Hashtable;import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.Control;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;public class TestLdap
{
   private String URL = "ldap://192.168.0.121:389/";
   private String BASEDN = "dc=vm, dc=net";
   private String account = "Administrator"; // binddn
   private String password = "Abcd123456"; // bindpwd   private String FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";
   private LdapContext ctx = null;
   private Hashtable env = null;
   private Control[] connCtls = null;   private void connectToLdap()
   {
      env = new Hashtable();
      env.put(Context.INITIAL_CONTEXT_FACTORY, FACTORY);
      env.put(Context.PROVIDER_URL, URL + BASEDN);// LDAP server
      env.put(Context.SECURITY_AUTHENTICATION, "simple");
      // 此处若不指定用户名和密码,则自动转换为匿名登录
      env.put(Context.SECURITY_PRINCIPAL, "cn=" + account);
      env.put(Context.SECURITY_CREDENTIALS, password);      try
      {
         ctx = new InitialLdapContext(env, connCtls);
      } catch (javax.naming.AuthenticationException e)
      {
         System.out.println("Authentication faild: " + e.toString());
         e.printStackTrace();
      } catch (Exception e)
      {
         System.out.println("Something wrong while authenticating: " + e.toString());
         e.printStackTrace();
      }
   }   public void runTest()
   {
      connectToLdap();
   }   public static void main(String args[])
   {
      TestLdap tl = new TestLdap();
      tl.runTest();
   }
}
运行之后出现如下错误:
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 525, vece]AD的域名为vm.net,DC主机名为win2k3r2pdc,地址为192.168.0.121,Administrator是域管理员,密码为Abcd123456。
若采用匿名登录,则可以通过认证,但是无法执行后续的查询等操作。请高人指教如何解决。多谢!