Как определить, разрешает ли сервер LDAP анонимную привязку или нет?

Используя java, когда я пытаюсь подключиться к серверу LDAP, который не допускает анонимную привязку, я не получаю никаких ошибок. Но когда я использую клиента для анонимного подключения к этому серверу, я не могу. Есть ли способ определить, поддерживает ли сервер LDAP анонимную привязку или нет в java?

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

person user1713069    schedule 24.01.2013    source источник
comment
Просто попробуйте? И обработать исключение?   -  person user207421    schedule 24.01.2013


Ответы (1)


Когда я запускаю ваш код для a, который не допускает анонимную привязку, я получаю:

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

Было, поэтому я это прокомментировал.

-Джим

person jwilleke    schedule 24.01.2013
comment
К серверу я пытался подключиться, я не получаю этого исключения. Вот почему я хочу знать, есть ли способ проверить, разрешает ли сервер LDAP анонимную привязку или нет через java? - person user1713069; 25.01.2013
comment
В протоколе LDAP нет ничего, что позволило бы вам определить, разрешает ли сервер анонимную привязку. Вы должны попробовать это с известным хорошим клиентом LDAP (Apache Studio или утилитой командной строки от поставщика сервера LDAP), чтобы определить, действительно ли сервер не поддерживает анонимную привязку. Возможно, поддерживает анонимную привязку, но анонимных прав нет. - person jwilleke; 25.01.2013
comment
В чем разница между анонимной привязкой и анонимными правами? - person user1713069; 29.01.2013
comment
большинство реализаций сервера LDAP могут определять права, предоставленные анонимному привязанному пользователю, на основе настройки управления доступом в реализации LDAP. - person jwilleke; 30.01.2013