1

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

1 回答 1

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());

是,所以我把它注释掉了。

-吉姆

于 2013-01-24T10:43:40.217 回答