如题,用下面的程序段访问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。
若采用匿名登录,则可以通过认证,但是无法执行后续的查询等操作。请高人指教如何解决。多谢!
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。
若采用匿名登录,则可以通过认证,但是无法执行后续的查询等操作。请高人指教如何解决。多谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货