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

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
Sacrificer
OTRS Новобранец
Сообщения: 50
Зарегистрирован: 10 окт 2010, 08:13
Откуда: Москва

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

Сообщение Sacrificer » 13 окт 2010, 04:42

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

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

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

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

Сообщение alexus » 13 окт 2010, 23:17

Возможно на это влияет параметр MaxPageSize установленный в AD. По умолчанию он =1000. Попробуйте его изменить.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

ULiX
OTRS Новобранец
Сообщения: 45
Зарегистрирован: 12 окт 2010, 08:56
Контактная информация:

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

Сообщение ULiX » 14 окт 2010, 04:21

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

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

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

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

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

Sacrificer
OTRS Новобранец
Сообщения: 50
Зарегистрирован: 10 окт 2010, 08:13
Откуда: Москва

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

Сообщение Sacrificer » 14 окт 2010, 06:29

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

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

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

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

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

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

ULiX
OTRS Новобранец
Сообщения: 45
Зарегистрирован: 12 окт 2010, 08:56
Контактная информация:

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

Сообщение ULiX » 19 окт 2010, 00:43

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 с числом за знаком "=".

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

Ответить