如何确定LDAP服务器是否允许匿名绑定?

时间:2013-01-24 01:13:01

标签: java ldap anonymous

当我尝试连接到不允许匿名绑定的LDAP服务器时使用java我没有收到任何错误。但是当我使用客户端匿名连接到该服务器时,我无法做到。有没有办法在java中识别LDAP服务器是否支持匿名绑定?

// Set up environment for creating initial context
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://"+host+":"+port+"/");     
env.put(Context.SECURITY_PRINCIPAL, dn);
env.put(Context.REFERRAL, "follow");
env.put(VsomConstants.LDAP_CONNECT_TIMEOUT, SystemPreferencesHelper.getLdapConnectionTimeOut().toString());

env.put(Context.SECURITY_AUTHENTICATION, "none");

// Create initial context
ctx = new InitialDirContext(env);

1 个答案:

答案 0 :(得分:1)

当我针对不允许匿名绑定的代码运行代码时,我得到:

javax.naming.AuthenticationNotSupportedException: [LDAP: error code 48 - Anonymous Simple Bind Disabled

我使用一种方法进行测试,作为你提供的代码的包装器:

try
{
   doSimpleBind(args[0], args[1], args[2]);
}
catch (NamingException e)
{
   e.printStackTrace();
}

不确定你的行:

env.put(VsomConstants.LDAP_CONNECT_TIMEOUT,SystemPreferencesHelper.getLdapConnectionTimeOut().toString());

是的,所以我评论了它。

-Jim