> For the complete documentation index, see [llms.txt](https://docs.aamsystems.ru/passoffice/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aamsystems.ru/passoffice/passoffice-guide/admin-guide-doc/acs-configuration/acs-activedirectory.md).

# Конфигурирование интеграции с Active Directory

**Настройка интеграции PassOffice с Active Directory: Пошаговая инструкция**

Данное руководство описывает процесс настройки интеграции между PassOffice и Active Directory. Выполните следующие шаги под учетной записью администратора PassOffice.

**1.** **Предварительные действия:**

* Проверьте, что служба Active Directory запущена и доступна.

**Настройка PassOffice:**

**1. Запуск сервера PassOffice:** Запустите сервер PassOffice, используя файл `PassOfficeSrv.bat`.

**2. Авторизация в PassOffice:** Откройте браузер, введите адрес сервера PassOffice (например, `localhost:80`) и авторизуйтесь под учетной записью администратора.

**3**. **Переход к настройкам интеграции:** Откройте пункт меню «Администрирование / Настройки интеграции».

**4. Редактирование настроек Active Directory:**

* **Основные параметры:**
* `логин и пароль оператора` Active Directory, от лица которого будет работать PassOffice. Для обновления пароля:
  * Установите галочку **«Обновить пароль»**
  * Введите **новый пароль** в соответствующее поле и после этого нажмите **«Сохранить»**.
* `URL Active Directory:` адрес сервера AD например, `ldap://dc.example.com.`
* `Поисковая база (Base DN):` корневой объект в AD, с которого начинается поиск пользователей (например, `DC=example,DC=com`).
* `Connection timeout и Read timeout`: задайте значения тайм-аутов для соединения и чтения данных.

• **Вкладка «SSL»:**

* Добавьте сертификат для защищенного соединения.
* Поддерживаются сертификаты x509, хранилища JKS и PKCS12.
* Включите настройку "Упрощенная проверка" для отключения проверки хоста и домена.

• **Вкладка «Аутентификация»:**

* *Разрешать аутентификацию и Разрешать саморегистрацию:* разрешает пользователям AD аутентифицироваться в PassOffice и создавать учетные записи (требуется наличие ФИО и email в AD).

• **Вкладка «Атрибуты»:**

* В настройках интеграции с AD можно указать соответствие полей PassOffice и атрибутов AD. Допускается указывать **несколько атрибутов через запятую** — система возьмёт значение из **первого непустого** атрибута по порядку.

Например:

| Поле в PassOffice | Примеры атрибутов AD (по приоритету) | Что получится в PassOffice                 |
| ----------------- | ------------------------------------ | ------------------------------------------ |
| **ФИО**           | displayName, cn                      | Берётся из displayName, если пусто — из cn |
| **Имя**           | givenName, GivenName, firstName      | Берётся первое непустое значение           |

* В каждом поле задайте стратегию разрешения конфликтов при обнаружении совпадений:
  * *Сторонняя система, очищать -* если поле есть и в PassOffice и в СКУД, то оно будет заменено на соответствующее из СКУД. Если поле есть в PassOffice, но нет в СКУД, то поле в PassOffice будет очищено. Если каких-то полей нет в PassOffice, но есть в СКУД, то оно заменится на соответствующее из СКУД.
  * *Сторонняя система, дополнять -* если поле есть и в PassOffice и в СКУД, то оно будет заменено на соответствующее из СКУД. Если поле есть в PassOffice, но нет в СКУД, то поле отгрузится из PassOffice. Если каких-то полей нет в PassOffice, но есть в СКУД, то оно заменится на соответствующее из СКУД.
  * *Бюро пропусков -* данные в PassOffice сохраняются, даже если они отличаются от данных в AD. Если каких-то полей нет в PassOffice, но есть в Active Directory, то они заменяются на соотвествующие из Active Directory.

```bbcode
Фамилия=sn
Почта=mail
Логин=userPrincipalName
Телефон=telephoneNumber
Рабочий телефон=telephoneNumber
Комната=physicalDeliveryOfficeName
Отдел=department
Должность=title
Организация=Company
Страна=co
```

• **Вкладка «Маски»:**

* *Маска даты рождения:* формат даты рождения, используемый в AD (например, `dd/MM/yyyy`). Важно, чтобы этот формат совпадал с форматом, используемым в PassOffice.
* *Маска ФИО:* порядок импорта ФИО из атрибутов AD (например, `{name} {surname} {middlename}`). Это определяет, как PassOffice соберет ФИО из различных полей AD.

Система поддерживает следующие переменные:

* {name} — имя
* {surname} — фамилия
* {middlename} — отчество

**Примеры масок**

| Маска                                        | Что получится из строки «Иван Иванович Петров»                     | Результат в PassOffice    |
| -------------------------------------------- | ------------------------------------------------------------------ | ------------------------- |
| {name} {middlename} {surname} (по умолчанию) | <p>Иван → имя</p><p>Иванович → отчество</p><p>Петров → фамилия</p> | ФИО: Петров Иван Иванович |
| {surname} {name} {middlename}                | <p>Петров → фамилия</p><p>Иван → имя</p><p>Иванович → отчество</p> | ФИО: Петров Иван Иванович |
| {surname} {name}                             | <p>Петров → фамилия</p><p>Иван → имя (отчество пусто)</p>          | ФИО: Петров Иван          |
| {name} {surname}                             | <p>Иван → имя</p><p>Петров → фамилия</p>                           | ФИО: Петров Иван          |
| {middlename} {surname} {name}                | <p>Иванович → отчество</p><p>Петров → фамилия</p><p>Иван → имя</p> | ФИО: Петров Иван Иванович |

• **Вкладка «Фильтры»:**

* На вкладке **«Фильтры»** в настройках интеграции с AD можно задать **пользовательский LDAP-фильтр** импорта операторов и людей.

**Как работает фильтр**

При выборе **«Пользовательская»** вы вводите LDAP-фильтр в стандартном синтаксисе Active Directory. По умолчанию система использует следующий «универсальный» фильтр:

```
(&(objectGUID=*)(|(objectClass=person)(objectClass=user))(|(givenName=*)
(GivenName=*))(sn=*)(|(mail=*)(userPrincipalName=*)))
```

**Расшифровка основных частей фильтра**

| Часть фильтра                                | Что означает                                                                   |
| -------------------------------------------- | ------------------------------------------------------------------------------ |
| `(& … )`                                     | **И** — все условия внутри должны выполняться одновременно                     |
| `(objectGUID=*)`                             | Объект существует в AD (техническое условие, всегда истинно)                   |
| `(\|(objectClass=person)(objectClass=user))` | **ИЛИ** — объект должен быть либо человеком, либо учётной записью пользователя |
| `(\|(givenName=*)(GivenName=*))`             | Есть хотя бы одно из полей «Имя» (в любом регистре)                            |
| `(sn=*)`                                     | Поле «Фамилия» заполнено                                                       |
| `(\|(mail=*)(userPrincipalName=*))`          | Есть хотя бы один из способов авторизации (почта или UPN)                      |

**Примеры готовых фильтров**

<table><thead><tr><th width="320">Цель импорта</th><th>Рекомендуемый фильтр</th></tr></thead><tbody><tr><td>Только активные пользователи</td><td><code>(&#x26;(objectCategory=person)(objectClass=user))</code></td></tr><tr><td>Только пользователи с почтой</td><td><code>(&#x26;(objectClass=user)(mail=*))</code></td></tr><tr><td>Только сотрудники определённого подразделения</td><td><code>(&#x26;(objectClass=user)(department=Отдел продаж))</code></td></tr></tbody></table>

После сохранения фильтра система будет импортировать только те объекты AD, которые ему соответствуют.\
Фильтр применяется как к операторам, так и к людям при синхронизации.

• **Вкладка «Дополнительные»:**

* *Блокировка человека и его карт при деактивации в Active Directory:* установите флажок для автоматической блокировки пользователя в PassOffice при его деактивации в Active Directory.
* *Разрешать слияние конфликтов при импорте -* при включенной настройке при импорте людей из интеграций объединяются похожие посетители.
* *Конфигурация размера пакетов для импорта:* оптимизируйте процесс импорта данных из AD, указав размер пакетов для различных типов объектов: человек, оператор.

• **Тест соединения:** обязательно проведите тест соединения после ввода параметров.

* **Успешный тест:** активируйте настройки соединения с AD.
* **Ошибка:** проверьте логи сервера PassOffice для выявления и устранения проблемы.

• **Реактивация/Деактивация соединения:** используйте соответствующие кнопки для управления состоянием соединения с AD.

• **Вкладка «Соответствие категорий»:**

* *Соответствие категорий оператора в PassOffice и группы Active Directory:* установите соответствие между группами AD и категориями в PassOffice или укажите категорию по умолчанию.

• **Вкладка «Профили операторов»:**

* Задайте соответствие группы AD и профиля оператора в PassOffice.

После выполнения этих шагов интеграция PassOffice с AD должна быть настроена. Рекомендуется проверить работоспособность интеграции путем создания тестовой заявки и отслеживания её в системе AD.
