当我尝试连接到不允许匿名绑定的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);
答案 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