|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
15.7 ADSI. Поисковые фильтры в запросах LDAP Поиск в Active Directory из скриптов ADSI в VBScript, поисковые фильтры в запросах LDAP, операторы для фильтров, объектные идентификаторы (OID), подстановочный символ, зарезервированные символы Вторая часть запросов LDAP представляет поисковый фильтр, который будет использован при выполнении данного запроса. Синтаксис поисковых фильтров представляет в ваше распоряжение очень мощные возможности, которые будут рассмотрены в этом разделе. Для поисковых фильтров LDAP предусмотрено два варианта синтаксиса. Первый вариант выглядит как (<имя_атрибута><оператор><значение>) В этом случае используется только один фильтр. Второй вариант выглядит как (<оператор><фильтр1><фильтр2><фильтрN>) В этом случае используется несколько фильтров, правила совместного использования которых определяются специальным оператором. Всего операторов в поисковых фильтрах LDAP предусмотрено семь:
Приведем несколько примеров. Фильтр "(objectClass=*)" означает, что для атрибута objectClass может быть использовано любое значение. Другими словами, если это будет единственный фильтр в запросе, то вернутся все объекты. Фильтр "(&(objectCategory=person)(objectClass=user)(!cn=andy))" определяет, что несколько фильтров будут объединены при помощи оператора "И". При выполнении запроса вернутся только те объекты, у которых для одновременно атрибута objectCategory предусмотрено значение person, для атрибута objectClass — значение user, а для атрибута cn значение не равно andy. Фильтр "(&(objectCategory=person)(objectClass=contact)(|(sn=Lee)(sn=Smith)))" определяет, что вернутся все объекты, для которых значение атрибута objectCategory соответствует Person и для которых значение атрибута sn равно либо Lee, либо Smith. Для проверки наличия определенных флагов в атрибутах для объектов применяется синтаксис с использованием так называемых объектных идентификаторов (object identifiers, OIDs). LDAP поддерживает только два OID: 1.2.840.113556.1.4.803 — этот OID определяет, что совпадение будет признано только тогда, когда совпадут все биты в сравниваемых значениях (bitwise AND); 1.2.840.113556.1.4.804 — этот OID определяет, что совпадение будет признано в случае, если совпадет любой бит в сравниваемых значениях (bitwise OR). Чаще всего синтаксис с OID используется при проверке флагов типов групп. Например, если мы хотим найти все группы безопасности, исключив группы распределения, соответствующий синтаксис может быть таким: (&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483648)) Число 2147483648 — это десятичное представление числа 0x80000000, которое соответствует флагу ADS_GROUP_TYPE_SECURITY_ENABLED в атрибуте groupType. В поисковых фильтрах LDAP поддерживается единственный подстановочный символ * (звездочка). Он представляет любое количество символов. Несколько примеров его использования: (cn=*bob*) — все объекты, в именах которых встречается последовательности символов bob; (&(objectClass=user)(email=*)) — все объекты пользователей, для которых предусмотрен адрес электронной почты; Некоторые символы в поисковых фильтрах являются зарезервированными и в значениях атрибутов должны заменяться на специальные последовательности (см. табл.)
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||