Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот урок отвечает, что у часто задаваемых пользователей вопросов часто есть при использовании JNDI к доступу службы LDAP. Некоторым из типичных проблем отвечают в Проблеме, Стреляющей в Подсказки урока Операций Именования и Каталога.
Ответ зависит от реализации. Это - то, потому что Context и интерфейсы
2. Почему провайдер LDAP игнорирует мои свойства среды безопасности, если я не устанавливаю
Если Вы предоставите пустую строку, то пустой byte/char массив, или null к свойству среды Context.SECURITY_CREDENTIALS, то анонимное связывает, произойдет, даже если свойство Context.SECURITY_AUTHENTICATION было установлено в "simple". Это - то, потому что для простой аутентификации, LDAP требует, чтобы пароль был непуст. Если пароль не предоставляется, то протокол автоматически преобразовывает аутентификацию в "none".
3. Почему я продолжаю получать
Вы могли бы говорить с сервером, который поддерживает только LDAP v2. См. Разный урок
4. Как я могу проследить сообщение LDAP?
Попытайтесь использовать свойство среды "com.sun.jndi.ldap.trace.ber". Если значение этого свойства является экземпляром java.io.OutputStream, то трассировочная информация о буферах BER, отправленных и полученных провайдером LDAP, пишется тому потоку. Если значением свойства является null, то никакой вывод трассировки не пишется.
Например, следующий код отправит вывод трассировки System.err.
env.put("com.sun.jndi.ldap.trace.ber", System.err);
5. Как я использую различный механизм аутентификации, такой как Kerberos?
Следуйте инструкциям в GSS-API/Kerberos v5 Аутентификация
6. Я должен включить SSL, изменяя пароль? /
Это действительно зависит от сервера каталогов, который Вы используете. Некоторые серверы каталогов не будут позволять Вам изменять пароль, если SSL не будет включен, но некоторые действительно позволяют это. Хорошо позволить SSL защищать Ваш пароль в канале связи.
7. Когда я прошу один атрибут, я возвращаю другого. Почему?
Название атрибута, которое Вы используете, могло бы быть синонимом для другого атрибута. В этом случае сервер LDAP мог бы возвратить каноническое название атрибута вместо того, который Вы предоставляли. Когда Вы смотрите в Attributes, возвращенном сервером, Вы должны использовать каноническое имя вместо синонима.
Например, "fax" мог бы быть синонимом для канонического названия атрибута "facsimiletelephonenumber". Если Вы попросите "fax", то сервер возвратит атрибут под названием "facsimiletelephonenumber". См. урок
8. Как я знаю тип значения атрибута?
Значением атрибута может быть или java.lang.String или byte[]. См. Разный раздел Учебного руководства JNDI для информации, на которой значения атрибутов возвращаются как byte[]. Чтобы сделать это программно, можно использовать оператор instanceof, чтобы исследовать значение атрибута, которое Вы возвращаете от провайдера LDAP.
9. Как я возвращаю значение атрибута в форме кроме Строки или байтового массива?
В настоящий момент Вы не можете. Провайдер LDAP возвращает только значения атрибута, которые являются или java.lang.String или byte[]. См. Разный раздел
Когда Вы используете следующую форму search(), значения атрибута обрабатываются как литералы; то есть, атрибут в записи в каталоге, как ожидают, будет содержать точно что значение:
Для последней формы подстановочные символы должны появиться в параметре filterExpr, а не в filterArgs. Значения в filterArgs также обрабатываются как литералы.
11. Почему не делают подстановочные знаки в фильтрах поиска всегда работают?
Подстановочный знак, который появляется прежде или после значения атрибута (такой как в "attr=*I*") указывает, что сервер должен искать соответствие значений атрибута при использовании правила соответствия подстроки атрибута. Если у определения атрибута нет правила соответствия подстроки, то сервер не может найти атрибут. Необходимо искать при использовании равенства или "существующего" фильтра вместо этого.
12. Почему я возвращаю только n число записей, когда я знаю, что есть больше в каталоге? Некоторые серверы конфигурируются, чтобы ограничить число записей, которые могут быть возвращены. Другие также ограничивают число записей, которые могут быть исследованы во время поиска. Проверьте свою конфигурацию сервера.
13. Как я передаю средства управления со своим поиском?
Средства управления не объясняются в этом учебном руководстве. Проверьте
14. Как я узнаю, сколько результатов поиска я возвратился?
Следует провести подсчет, поскольку Вы перечисляете через результаты. LDAP не предоставляет эту информацию.
15. Почему я получаю пустую строку как имя в моем
16. Почему я получаю строку URL как имя в моем SearchResult?
Запись LDAP была получена следующим или псевдоним или отсылка, таким образом, ее именем является URL. См. урок
17. Какой тип параметр Name передают к методам
Строковые формы принимают строковое представление составного имени. Таким образом, использование имени строки эквивалентно вызову new CompositeName(stringName) и передаче результатов к Context/DirContext метод. Параметром Name может быть любой объект, который реализует интерфейс Name. Если это - экземпляр CompositeName, то имя обрабатывается как составное имя; иначе, это обрабатывается как составное имя.
18. Я могу передать имя, которое я возвращал от методов
Это связывается с предыдущим вопросом. Да, Вы можете.
19. Каково отношение между именем, которое я использую для свойства
Можно думать об основном имени как прибывающий из различного пространства имен чем каталог. См.
20. Почему там странные кавычки и Escape на имена, которые я считал из каталога?
Синтаксический анализатор имени LDAP Sun консервативен относительно заключения в кавычки правил, но это однако производит "корректные" имена. Кроме того, помните, что имена записей, возвращенных
Начните использовать
21. Как я получаю полный DN записи LDAP?
Можно использовать