Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Настройка параметров запуска утилиты.
  2. Настройка расписания в планировщике заданий.
    1. Настройка расписания в ОС Linux на примере задания на запуск утилиты синхронизации ОШС c AD/LDAP

Для работы утилиты на Linux необходим пакет libldap-2.5. Если в используемой ОС в OpenLDAP используется другая версия, то будут возникать ошибки.
Установить версию 2.5 можно следуя инструкции.

Общая информация

  1. Синхронизация сотрудников и подразделений из LDAP каталога со списками "Пользователи" и "Должности" в Vitro-CAD (версия MP) выполняется с помощью утилиты "Vitro.Server.OrgStructureLdap".
  2. Корневой каталог утилиты - каталог, где располагается исполняемый файл утилиты.  Для примера, на системах с Windows это каталог: "c:\Program Files\Vitro Software\Vitro\Server\Tools\OrgStructureLdap\". 
  3. Настройки располагаются в файле "configorg_structure_ldap.json" корневого каталога утилиты.каталога расположения основных конфигурационных файлов (для Linux: /etc/Vitro/Server/Conf, для Windows: C:\Program Files\Vitro Software\Vitro\Server\Conf).
  4. В файле "org_structure_ldap.json" можно указывать настройки для нескольких доменов синхронизации. 
    Code Block
    titleMode
    [
    	{
    		// настройки синхронизации #1
    		"Mode": "Org",
    		...
    	},
    	{
     		// настройки синхронизации #2
    		"Mode": "List",
    		...
    	},
    	...
    	{
      		// настройки синхронизации #N
    		... 
    	}
    ]
  5. Утилита записывает результаты работы в лог. Файлы логов размещаются в папке \logs корневого каталога утилиты. Имя файла лога формируется по маске "Sync-%date{yyyyMMdd-HHmm}.log", где date - текущая дата.

Настройка параметров запуска утилиты

...

  1. .

Используемые параметры AD

  • mail (эл. почта) - обязательный атрибут. Пользователи с незаполненным атрибутом синхронизироваться не будут.
  • sn (фамилия), givenName (имя), middleName (отчество) - из этих атрибутов формируется значение атрибута Название для пользователя.
    Если значение этого выражения возвращает пустую строку, то в качестве названия берется значение атрибута displayName (выводимое имя).
  • title (должность) - используется для создания записей в справочнике Должности.
  • department (отдел), manager (руководитель) - два этих атрибута используются для построения дерева ОШС, когда утилита работает в режиме "Mode": "Org".
  • userAccountControl - в этом атрибуте проверяется наличие флага, что пользователь отключен. Отключенные пользователи не синхронизируются.
  • samAccountName (имя входа пользователя/логин) - используется при проверке параметра ExcludePrincipalList утилиты (исключение определенных пользователей из синхронизации).
  • distinguishedName - путь до объекта в каталоге AD, например CN=Developer,CN=Users,DC=vitro,DC=dev. Используется для построения дерева с включенным флагом "OUStructure": true.
  • description (описание) - используется в качестве названия подразделения (OrganizationUnit (OU) в AD), при синхронизации с включенным флагом "OUStructure": true.
  • name - используется в качестве названия подразделения (OrganizationUnit (OU) в AD), при синхронизации с включенным флагом "OUStructure": true, если атрибут description не заполнен.

Настройка параметров запуска утилиты

...


Режим работы утилиты. Позволяет задавать разные подходы при построении дерева организационно-штатной структуры (ОШС).
Code Block
titleMode


"Mode": "Org" - режим по умолчанию. Дерево ОШС строится по атрибутам "Отдел" (включение пользователя в подразделение) и "Руководитель" (построение связей между подразделениями) на закладке "Организация" карточки пользователя в AD.

"Mode": "List" - пользователи синхронизируются без построения дерева ОШС, единым линейным списком. При этом, корневым подразделением этого списка, будет папка из параметра "ListRootDepartment" (см. ниже).

Только для режима "Mode": "Org"!
Строить дерево организационно-штатной структуры (ОШС) не по полям "Отдел" (department) и "Руководитель" (manager), а по структуре (вложенности) и именам папок OU (Organization Unit).
Code Block
FunctionalGroup
titleOUStructure
"OUStructure": false - режим по умолчанию. Дерево ОШС строится по атрибутам "Отдел" (включение пользователя в подразделение) и "Руководитель" (построение связей между подразделениями) на закладке "Организация" карточки пользователя в AD.
"OUStructure": true - Дерево ОШС строится по структуре (вложенности) и именам папок OU (Organization Unit) текущего контейнера, атрибут "Container". В качестве названия создаваемого подразделения, берется атрибут "Описание" OU, если атрибут не заполнен, то имя OU.

Для пользователей создаются функциональные группы (ФГ), которые соответствуют группам безопасности в AD.
Внимание! Функциональные группы в Vitro-CAD создаются только для тех групп безопасности AD, в которых есть пользователи. Для пустых групп безопасности функциональный группы не создаются. Если есть вложенные группы безопасности, то все пользователи из них выбираются рекурсивно, но при этом ФГ создается только для самой верхней (родительской) группы безопасности.

...

Значение по умолчанию: false.
Code Block
titleFunctionalGroup


"FunctionalGroup": false - не создавать ФГ
"FunctionalGroup": true - создавать ФГ

Указывается guid узла, в котором будут создаваться функциональные группы. Параметр не обязательный. По умолчанию, создаваемые ФГ будут размещаться в папке "Группы" ОШС.
Code Block
DomainName
titleFunctionalGroupRoot
"FunctionalGroupRoot": "3047412c-dc93-4852-be34-f7081f65a57d"

Имя домена.

...

В случае включенного в домене шифрования LDAPS критически важно, чтобы в качестве значения параметра "DomainName" было указано имя контроллера домена в точности в соответствии с указанным в сертификате
Code Block
PortNumber
titleDomainName
"DomainName": "vitroDC01.example.com"

Номер порта для подключения к LDAP каталогу. Для подключения к LDAPS используется порт с номером 636 или 3269. Значение по умолчанию: 389.
code
Code Block
titlePortNumber


"PortNumber": 389
titleContainer

Контейнер AD, откуда будут браться данные для синхронизации.

...


Примечание: если в контейнере есть группы, то выбираются все участники группы, аналогично и для вложенных групп, т.е. рекурсивно.
Code Block
titleLdapUserNameContainer
"Container": "CN=Users,DC=vitro,DC=dev"

Имя пользователя для доступа к LDAP каталогу пользователей.
Code Block
LdapPassword
titleLdapUserName
"LdapUserName": "LdapUser@example.com"

Пароль пользователя для доступа к LDAP каталогу пользователей.
Code Block
AuthType
titleLdapPassword
"LdapPassword": "LdapUserPassword"

Тип аутентификации при подключении к LDAP каталогу пользователей.
code
Code Block
titleAuthType


"AuthType": "Negotiate" - для Windows

"AuthType": "Basic" - для Linux
titleSsl

Подключаться по SSL протоколу. Используется совместно с параметром PortNumber (порт 636 или 3269). Значение по умолчанию: false.
code
Code Block
titleSsl


"Ssl": false - не использовать подключение по SSL
"Ssl": true - использовать подключение по SSL
title WebUrl

URL-адрес сайта Vitro, на котором размещены списки "Пользователи" и "Должности".
code
Code Block
title WebUrl

	"WebUrl": "http://vitro"
titleLogin

Имя пользователя для доступа к веб-приложению Vitro.
Code Block
Password
titleLogin
"Login": "VitroUserLogin"

Пароль для доступа к веб-приложению Vitro.
Можно указать атрибут
Code Block
titleTitleField
Password
"Password": "VitroUserPassword"

Атрибут, откуда брать ФИО пользователя. Параметр не обязательный, может быть пустой строкой или отсутствовать. Если параметр не указан, то ФИО формируется по следующей по формуле: sn + " " + givenName + " " + middleName. Если полученное значение - пустая строка, то берется значение из атрибута "displayName".
ExcludeOrgUnitList
Code Block
titleTitleField


"TitleField": "displayName"
Code Block
title

Перечень OU (Organizational Unit), которые будут исключены из синхронизации. Значение по умолчанию: []
Code Block
titleExcludeOrgUnitList


ExcludeOrgUnitList: ["[excludeOU1;","excludeOU2"]"
Code Block
titleExcludePrincipalList

Перечень групп безопасности и/или пользователей (атрибут "SamAccountName"), которые будут исключены из синхронизации. Значение по умолчанию: []
Если у сотрудника
Code Block
titleExcludePrincipalList
  

ExcludePrincipalList: ["[testGroup1;","testUser1"]"
Code Block
titleAddPrincipalToDepartmentHeader

Подразделение, в

...

которое 

...

помещаются 

...

сотрудники и 

...

подразделения, 

...

у 

...

которых 

...

нет 

...

родительского 

...

подразделения. 

...

Параметр 

...

не обязательный, 

...

может 

...

быть 

...

пустой 

...

строкой 

...

или 

...

отсутствовать.

...

 

...


Если

...

параметр отсутствует, то указанные сотрудники и подразделения будут добавляться в корень списка "Пользователи".
Code Block
titleDefaultDepartment
В указанное подразделение помещаются сотрудники, у которых нет родительского подразделения. Параметр не обязательный, может быть пустой строкой или отсутствовать.

"DefaultDepartment": "_Без_подразделения"
Code Block
titleListRootDepartment
ООО \"Компания\""

Только для режима "Mode": "List"! Корневое подразделение (папка) для синхронизируемого списка пользователей. Параметр не обязательный, может быть пустой строкой или отсутствовать. Если параметр не указан, то используется параметр "DefaultDepartment", если и он не указан, то пользователи будут создаваться в корне списка "Пользователи".
Code Block
IsTest
titleListRootDepartment
"ListRootDepartment": "все пользователи"

Тестовый режим работы утилиты (без сохранения/модификации данных и с записью в лог). Значение по умолчанию false.
Code Block
titleIsTest


"IsTest": false - утилита работает в режиме синхронизации
"IsTest": true - утилита работает в режиме вывода в лог SP, синхронизация не выполняется


История изменений

13.11.202425.1.39.15 (17.03.2025)    Добавлен новый параметр - FunctionalGroupRoot.

25.1.39.8

Добавлен новый параметр "TitleField".

.14 (14.03.2025)    Добавлен возможность синхронизации с несколькими доменами.

25.1.39.12 (09.12.2024)    При синхронизации поиск пользователей выполняется по атрибуту "objectGUID" (атрибут "ldap_object_guid"), если пользователь не найден, то поиск выполняется по атрибуту "mail" (атрибут "email"), при этом атрибут "ldap_object_guid" должен быть пустым.

25.1.39.11 (03.12.2024)    Файл "config.json" переименован в "org_structure_ldap.json" и перенесен в каталог расположения основных конфигурационных файлов (для Linux: /etc/Vitro/Server/Conf, для Windows: C:\Program Files\Vitro Software\Vitro\Server\Conf).21.11.2024

25.1.39.10 (21.11.2024)    Добавлены новые параметры "PortNumber", "Ssl" и "FunctionaGroupFunctionalGroup". Удален режим работы "Mode": "Group" (заменен на флаг "FunctionalGroup"). Удален параметр "Action", как более не актуальный.

25.1.39.8 (13.11.2024)      Добавлен новый параметр "TitleField".

25.1.40.16 (05.06.2025)    Исправлена ошибка, при которой не проверялся на равенство тип элемента, при сравнении элементов из списка "Пользователи".

25.1.40.17 (17.06.2025)    Удален параметр "AddPrincipalToDepartmentHeader". Доработана логика параметра "DefaultDepartment" (см. описание параметра).

25.1.40.18 (30.06.2025)    Добавлен параметр "OUStructure".

25.1.40.19 (13.08.2025)    Уточнен алгоритм работы для параметра "OUStructure = true". В качестве названия создаваемого подразделения, берется атрибут "Описание" OU, если атрибут не заполнен, то имя OU.

2026.0.1.1 (20.03.2026)    Исправлена ошибка при разборе строки атрибута "DistinguishedName", при включенном флаге "OUStructure" (если в строке есть экранированная запятая).

2026.0.1.2 (02.04.2026)    Улучшения по информации, выводимой в лог. Вместо ошибки 500 без детализации, теперь выводится текст валидатора (они срабатывают чаще всего). Уточнение сообщений, выводимых в лог.

2026.0.3.3 (19.05.2026)    Устранено зацикливания при обработке групп безопасности в режиме "FunctionalGroup", когда группа вложена сама в себя или через другую группу. Рефакторинг кода.