Страница 1 из 1

Поиск Клиента (LDAP)

Добавлено: 13 окт 2010, 04:42
Sacrificer
При кликанье на меню Клиент, и вставки в окно поиска * (типа искать всех) ничего не ищется (Source стоит LDAP), в логе вот такая ошибка
[Kernel::System::CustomerUser::LDAP::CustomerSearch][336] Sizelimit exceeded

Существует ли какое огрничение на количество объектов в AD? Я поместил в выделеное OU 5 пользователей, и сделал на него фокус в скрипте, ошибка пропала

Re: Поиск Клиента (LDAP)

Добавлено: 13 окт 2010, 23:17
alexus
Возможно на это влияет параметр MaxPageSize установленный в AD. По умолчанию он =1000. Попробуйте его изменить.

Re: Поиск Клиента (LDAP)

Добавлено: 14 окт 2010, 04:21
ULiX
Посмотри, чему заданы в файлах конфигурации следующие параметры:

Код: Выделить всё

$Self->{CustomerUser} = {
[...]
        CustomerUserSearchPrefix           => '*',
        CustomerUserSearchSuffix           => '*',
        CustomerUserSearchListLimit        => 250,
        CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
[...]
}
Если поиск ведется по всему домену, то в запрос попадают не только юзеры но и компьютеры.
Ограничение вида

Код: Выделить всё

    AlwaysFilter = '(objectclass=user)';
не поможет, ибо любой компьютер отчасти является объектом класса user
Фильтр нужно задавать как '(objectCategory=user);'

Re: Поиск Клиента (LDAP)

Добавлено: 14 окт 2010, 06:29
Sacrificer
ULiX спс
Я пошел дальше и развил тему, вот фильтр, который пропускает задизабленных :) пользователей, или не показывает их в результатах:

# ИСКАТЬ ВСЕХ ПОЛЬЗОВАТЕЛЕЙ ЗА ИСКЛЮЧЕНИЕМ ОТКЛЮЧЕННЫХ

Код: Выделить всё

AlwaysFilter => '(objectCategory=User)(!userAccountControl=66050)',
Прошу помнить, что я Window Admin и на до делать привязку моих постов именно к Windows.

objectCategory=User - как правильно подсказали, ограничивает поиск только объектами User (Хотя надо подумать и над объектами Contact, так как если у компании туча магазинов в каждом городе, не факт что они все в одном лесе).
Но в этом случае надо экспериментировать, так как Contact не имеет таких ключевых атрибутов типа как userPrincipalName

!userAccountControl=66050 - параметр который указывает что пользователь отключен, знак ! - знак исключения

Re: Поиск Клиента (LDAP)

Добавлено: 19 окт 2010, 00:43
ULiX
Sacrificer писал(а):!userAccountControl=66050 - параметр который указывает что пользователь отключен, знак ! - знак исключения
Неверное суждение.
За блокировку пользователя отвечает лишь второй бит данного атрибута. Ты же предлагаешь проверять полное совпадение.
Посмотрим на предлагаемое тобой число в бинарным взглядом
1 0000 0010 0000 0010
Как видим второй бит действительно установлен.
Но установлена ещё пара битов. А за что отвечают они?

0x200
This is a default account type that represents a typical user.
ADSI flag: ADS_UF_NORMAL_ACCOUNT

0x10000
The password for this account will never expire.
ADSI flag: ADS_UF_DONT_EXPIRE_PASSWD

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

Если уж решать данную задачу, то решать по умному.

Вот нужный тебе фильтр для отбора незалоченных:
(!userAccountControl:1.2.840.113556.1.4.803:=2)

Это так называемые спец директивы AD.
операция :1.2.840.113556.1.4.803: - эквивалентна логической операции AND с числом за знаком "=".

Информация не новая, но полезная.