Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Программирование для администраторов
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

15.7 ADSI. Поисковые фильтры в запросах LDAP

Поиск в Active Directory из скриптов ADSI в VBScript, поисковые фильтры в запросах LDAP, операторы для фильтров, объектные идентификаторы (OID), подстановочный символ, зарезервированные символы

Вторая часть запросов LDAP представляет поисковый фильтр, который будет использован при выполнении данного запроса. Синтаксис поисковых фильтров представляет в ваше распоряжение очень мощные возможности, которые будут рассмотрены в этом разделе.

Для поисковых фильтров LDAP предусмотрено два варианта синтаксиса. Первый вариант выглядит как

(<имя_атрибута><оператор><значение>)

В этом случае используется только один фильтр.

Второй вариант выглядит как

(<оператор><фильтр1><фильтр2><фильтрN>)

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

Всего операторов в поисковых фильтрах LDAP предусмотрено семь:

Оператор

Значение

=

Равно

~=

Приблизительно равно

<=

Меньше или равно

>=

Больше или равно

&

Логическое И (AND)

|

Логическое ИЛИ (OR)

!

Логическое отрицание (NOT)

Приведем несколько примеров.

Фильтр "(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=*)) — все объекты пользователей, для которых предусмотрен адрес электронной почты;

Некоторые символы в поисковых фильтрах являются зарезервированными и в значениях атрибутов должны заменяться на специальные последовательности (см. табл.)

Зарезервированные символы

Заменяющая последовательность

*

\2a

(

\28

)

\29

\

\5c

NUL

\00

/

\2f

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 

 
© 2004-2008, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru