Как исключить результаты в запросе LDAP - PullRequest
0 голосов
/ 16 октября 2019

Мне нужно сделать веб-каталог из AD. Однако я должен исключить часть дерева в моих результатах.

Чтобы схематизировать структуру:

-Telephony
----Special
----Users
----Other

Я хотел бы исключить OU = Special. Или цель OU = Users и OU = Other, но без необходимости писать строку с помощью «OU».

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

        $ldap = Ldap::create('ext_ldap', array(
            'host' => 'XXX.XXX.XXX.XXX',
        ));
        $ldap->bind('dn', 'password');

        $query = $ldap->query('ou=Telephony,ou=XXXX,dc=XXXX,dc=XXXX,dc=XXXX,dc=XXXX', '(cn=*)', ['filter' => '|(ou=Users*)(ou=Other*)']);

Но я все еще получаю данные от Special.

Как я могу сделать этот фильтр?

Спасибо за помощь

1 Ответ

0 голосов
/ 18 октября 2019

Это зависит.

Определено в LDAPv3 RFC 2254 и Фильтр поиска ExtensibleMatch требует, чтобы серверы LDAP распознавали элемент поиска, называемый расширяемым фильтром соответствия.

Фильтр поиска ExtensibleMatch позволил бы это, однако, фильтр поиска ExtensibleMatch НЕ поддерживается всеми поставщиками LDAP. (Microsoft Active Directory в качестве одного примера).

Для вашего примера фильтр похож на: (& (| (ou: dn: = Users) (ou: dn: = Others)) (objectclass = inetorgperson)(sn = willeke)) Может работать.

...