Есть ли способ заставить функцию xdmp: ldap-search () использовать внешнюю конфигурацию LDAP сервера приложений

Для своего приложения я использую аутентификацию на уровне приложения, а для некоторых пользователей я хочу получить некоторую информацию из активного каталога.

Я установил http-сервер с конфигурацией «внешних ценных бумаг», которую я создал для нашего активного каталога.

Я попытался использовать функцию следующим образом:

let $res := xdmp:ldap-search( "([email protected])",  <options xmlns="xdmp:ldap">
                        <use-appserver-config>true</use-appserver-config>
                    </options> )

К сожалению, это ничего не возвращает, хотя и должно, и не выдает никаких сообщений об ошибках. Однако, если я явно указываю имя пользователя, пароль, сервер ldap и т. Д., Как показано ниже, он работает (ну, в большинстве случаев, если ответ не содержит символа с диакритическими знаками):

let $res := xdmp:ldap-search( "([email protected])"
                    ,  <options xmlns="xdmp:ldap">
                        <username>{ $config:ldap-connection-username }</username>
                        <password>{ $config:ldap-connection-password }</password>
                        <server-uri>{ $config:ldap-connection-server }</server-uri>
                        <search-base>{ $config:ldap-connection-search-base }</search-base>
                    </options>)

Ясно, что вариант true не работает, как я ожидал. Но это также принимается во внимание, потому что если я установлю значение false, будет возвращена ошибка.

Я уверен, что установил значения для настроенного сервера ldap на страницах администратора как идентичные тем, которые использовались в приведенном выше рабочем примере.

Это ошибка? Или что мне не хватает?

спасибо, К.


person Kemal Erdogan    schedule 23.10.2017    source источник
comment
Привет. Не могли бы вы объяснить, где вы запускаете тесты для двух наборов кода, указанных выше? Запросить консоль или сервер приложений напрямую? Если вы используете консоль запросов, убедитесь, что вы запускаете код в контексте соответствующего сервера приложений.   -  person David Ennis    schedule 23.10.2017
comment
@DavidEnnis, спасибо, что посмотрели. Да, я тестировал как на qconsole (заменил переменные жестко закодированными строками во втором случае), так и на сервере приложений, для которого я настроил внешнюю безопасность.   -  person Kemal Erdogan    schedule 23.10.2017


Ответы (1)


Это похоже на работу в QConsole в контексте сервера приложения. Указание <use-appserver-config>true</use-appserver-config> приводит к тому, что сервер AD не обращается к серверу AD, а результирующая последовательность пуста. Запуск непосредственно под AppServer действительно возвращает ожидаемые результаты, я создам для этого отчет об ошибке.

person M.Warnes    schedule 28.10.2017