Ошибка тестирования соединения с несколькими серверами LDAP - PullRequest
1 голос
/ 03 марта 2020

Я занимаюсь разработкой java веб-приложения, которое должно подключаться к серверу Active Directory (LDAP) для аутентификации некоторых пользователей. Он работает нормально, но я пытаюсь настроить его, чтобы иметь возможность подключения к 2 различным серверам. Поэтому я поместил этот синтаксис в свойствах:

env.put(Context.PROVIDER_URL, 
        "LDAP://" + ParametrosManager.readParametro("LDAP_PROVIDER_URL") + ":636 " +
        "LDAP://" + ParametrosManager.readParametro("LDAP_PROVIDER_URL2") + ":636" 
        );
System.out.println(env.get(Context.PROVIDER_URL));
// it prints LDAP://psfjfhsj.com.br:636 LDAP://myRealLdap.com.br:636

Итак, они есть, два URL-адреса ldap, разделенных пробелами. Первый не настоящий адрес, второй - один из моих серверов ldap. Но мои попытки подключения терпят неудачу, потому что мое приложение не может найти первый сервер! Вот некоторые результаты консоли:

javax.naming.CommunicationException: psfjfhsj.com.br:636 [Root exception is java.net.UnknownHostException: psfjfhsj.com.br]
 at com.sun.jndi.ldap.Connection.<init>(Connection.java:226)
 (...)
Caused by: java.net.UnknownHostException: psfjfhsj.com.br

Я отлаживаю ssl-соединения (используя на своем сервере флаг -Djavax.net.debug=ssl) и вижу, что мой настоящий хост (myRealLdap.com.br) подключается и рукопожатия в порядке. Конечно, фальшивый URL не может быть найден, но разве это не реалистичное моделирование c для "выключенного сервера"?

Я использую wildfly 9.0.2 сервер с openjdk 1.8.0_242.

Спасибо

1 Ответ

0 голосов
/ 13 марта 2020

Согласно Oracle код, который вы внедрили, должен поддерживать это:

Вместо одного URL-адреса, вы также можете указать разделенный пробелами список URL-адресов. В этом случае поставщик LDAP будет пытаться использовать каждый URL по очереди, пока не сможет создать успешное соединение. Затем поставщик LDAP установит для свойства Context.PROVIDER_URL успешный URL-адрес, чтобы приложение могло определить, какой URL-адрес используется. Документация В нем говорится, что он выбрасывается, чтобы указать, что IP-адрес хоста не может быть определен. В основном эта ошибка выдается за пропущенную DNS.

Глядя глубже на inte rnet Я обнаружил, что у вас возникла проблема, очень близкая к вашей (та же ошибка при подключении к LDAP ( здесь , здесь и здесь ). Все эти проблемы были решены путем обновления DNS с включением неизвестного имени хоста.

Это приводит к моей интерпретации Oracle документация. Когда говорят, что провайдер LDAP будет пытаться использовать каждый URL по очереди, пока не сможет создать успешное соединение они означают, что в соединении может быть отказано, поскольку сервер не работает , не потому что его не существует.

...