# Операторы и Active Directory

В этой статье описано, как администратору Webim настроить работу операторов с интеграцией [Active Directory](https://webim.ru/kb/devops/active-directory/) и как использовать **группы безопасности Webim** для выдачи прав на основании групп безопасности в службе каталогов.

!!! Note "N.B."
    Данная функциональность является [тарифной опцией](https://webim.ru/price/). Чтобы её подключить, обратитесь, пожалуйста в [техническую поддержку](mailto:support@webim.ru) **Webim** или к вашему аккаунт-менеджеру.

## Термины

  * **Оператор** — пользователь панели управления Webim.

  * **SSO** — сквозная авторизация. В контексте этой интеграции означает вход оператора в Webim через Active Directory.

  * **sAMAccountName** — логин пользователя внутри домена **Active Directory**.

  * **Идентификатор SSO** — логин пользователя и имя домена в формате `sAMAccountName@DOMAIN`, где `DOMAIN` — значение поля `name` соответствующего объекта в массиве `ldap.domains` с учётом регистра, например `operator@EXAMPLE`.

  * **Группа безопасности Active Directory** — группа (обычно security group) в Active Directory, в которую добавлены пользователи.

  * **Группа безопасности Webim** — объект в Webim, который задаёт:

    * роли (права) оператора,

    * отделы,

    * наблюдаемые отделы (права супервизора в выбранных отделах). 

  * **DN** (Distinguished name) — уникальное имя объекта в LDAP/Active Directory. DN однозначно идентифицирует объект в дереве каталогов и состоит из компонентов (например `CN`, `OU`, `DC`). Пример DN группы: `CN=operators,OU=roles,DC=webim,DC=local`.

При SSO Webim применяет эти настройки к оператору на основании групп **Active Directory**.

## Сопоставление группы Active Directory и группы безопасности Webim

### Источник групп пользователя Active Directory

При входе через SSO (и при синхронизации) Webim получает из LDAP список групп пользователя из атрибута, заданного в настройке `security_group_attribute` (по умолчанию — `memberOf`). Значения приходят в виде **DN**, например:

  * `CN=admins,OU=roles,DC=webim,DC=local`

  * `CN=operators,OU=roles,DC=webim,DC=local`

### Формирование DN для группы безопасности Webim

В настройках LDAP задаётся шаблон `security_group_pattern`. Webim подставляет в этот шаблон **имя** группы безопасности Webim и получает **DN**, с которым сравнивает группы пользователя.

Пример:

  * `security_group_pattern`: `CN={},OU=roles,DC=webim,DC=local`

  * В Webim создана группа безопасности с именем `operators`

Тогда Webim будет ожидать, что среди групп пользователя (из `memberOf`) есть значение:

  * `CN=operators,OU=roles,DC=webim,DC=local`

Если совпадение найдено, Webim применяет к оператору объединение ролей и отделов из всех совпавших групп безопасности Webim.

!!! Note "N.B."
    Если не найдено ни одной совпавшей группы безопасности Webim, вход/синхронизация пользователя через SSO будет отклонена (нет прав, не с чем сопоставлять).

## Настройка групп безопасности Webim

### Навигация к разделу

Раздел доступен в панели управления Webim: **«Настройки»** → **«Группы безопасности»**.

![Группы безопасности](https://webim.ru/kb/img/for-admins/active-directory/navigation-to-security-groups.webp){ style="width: 263px; max-width: 100%" }

### Создание группы безопасности

  1. Откройте раздел **«Группы безопасности»**.

  1. В блоке создания группы заполните поля:

    * **Группа безопасности** — имя группы. Это ключевое поле для сопоставления с **Active Directory**: именно это значение подставляется в `security_group_pattern`. Пример:

        * в **Active Directory** есть группа `CN=operators,OU=roles,DC=webim,DC=local`

        * `security_group_pattern` равен `CN={},OU=roles,DC=webim,DC=local`

        * тогда в Webim в поле **«Группа безопасности»** укажите `operators`.

    * **Отделы** — отделы, в которые будет добавлен оператор.

    * **Роли** — роли оператора (например, оператор/супервизор/администратор).

    * **Наблюдаемые отделы** — отделы, которыми оператор сможет управлять как супервизор.

  1. Нажмите **«Сохранить»**.

![Страница групп безопасности](https://webim.ru/kb/img/for-admins/active-directory/security-groups-create.webp){ style="width: 1350px; max-width: 100%" }

### Редактирование и удаление группы безопасности

  * Для удаления группы нажмите на кнопку с пиктограммой **«Обведенный крестик»**. Данное действие необходимо будет подтвердить.

    ![удаление группы](https://webim.ru/kb/img/for-admins/active-directory/delete-security-group.webp){ style="width: 371px; max-width: 100%" }

  * Для редактирования группы нажмите на кнопку с пиктограммой **«Карандаш»**. После этого появится возможность изменить значения полей выбранной группы.

    ![редактирование группы](https://webim.ru/kb/img/for-admins/active-directory/edit-security-groups.webp){ style="width: 1252px; max-width: 100%" }

Чтобы подтвердить изменения, нажмите на кнопку с пиктограммой **«Зеленая галочка»**.

## Подготовка Active Directory

### Пользователь

У пользователя **Active Directory** должны быть заданы (минимум):

  * **sAMAccountName** — используется вместе с именем домена для формирования идентификатора SSO.

  * **mail** — используется как email сотрудника в Webim (в том числе для входа по email/паролю, если он разрешён).

![Профиль пользователя в Active Directory: вкладка «Общие»](https://webim.ru/kb/img/for-admins/active-directory/active-directory-user.webp){ style="width: 416px; max-width: 100%" }

!!! Note "N.B."
    Для электронной почты в Webim есть требования: корректный формат адреса и уникальность в пределах аккаунта. Если email уже используется другим сотрудником, Webim не позволит создать/обновить запись.

### Группы

  1. Создайте (или выберите существующие) группы безопасности **Active Directory**, которые будут управлять доступом в Webim.

  1. Добавьте пользователя в одну или несколько таких групп.

  1. Убедитесь, что эти группы попадают в атрибут `memberOf` (или иной атрибут, заданный в `security_group_attribute`) и имеют **DN**, соответствующий `security_group_pattern`.

![Профиль пользователя в Active Directory: вкладка «Член групп»](https://webim.ru/kb/img/for-admins/active-directory/active-directory-user-groups.webp){ style="width: 417px; max-width: 100%" }

## Создание оператора в Webim

Дальнейшие шаги зависят от сценария, который используется в аккаунте:

  * **Автоматическое создание оператора при первом входе по SSO** — если включена настройка `sso.create_new_agent_if_not_exist` (подробнее про параметры смотрите в статье: [SSO и режимы авторизации](https://webim.ru/kb/devops/active-directory/sso-configuration.html))

  * **Ручное создание оператора** — если автоматическое создание отключено или вы хотите заранее подготовить учётную запись (см. [инструкцию по регистрации и редактированию профилей сотрудников](https://webim.ru/kb/for-admins/registration-agents-and-supervisors.html))

## Привязка оператора Webim к пользователю Active Directory

  1. Откройте профиль сотрудника.

  1. Перейдите на вкладку **«Настройки SSO»**.

  1. Заполните:

    * **Идентификатор пользователя, используемый для схемы аутентификации SSO** — укажите логин и имя домена в формате `sAMAccountName@DOMAIN`, например `operator@EXAMPLE`. Имя домена должно совпадать с полем `name` соответствующего объекта в массиве `ldap.domains` в [настройках LDAP](https://webim.ru/kb/devops/active-directory/ldap-configuration.html).

    * Включите флаг **«Разрешить аутентификацию пользователя через SSO»**.

  1. При необходимости включите флаг **«Разрешить аутентификацию по электронной почте и паролю»**.

    !!! Note "N.B."
        Этот флаг работает только если в [редакторе настроек (account config)](https://webim.ru/kb/for-admins/service-pages/account-config-editor.html) задан режим `sso.auth_mode = sso_and_common_auth`. Если `sso.auth_mode = only_common_auth`, вход по email/паролю разрешён всем пользователям и этот флаг не влияет на поведение (подробнее про параметры смотрите в статье: [SSO и режимы авторизации](https://webim.ru/kb/devops/active-directory/sso-configuration.html)).

  1. Нажмите **«Сохранить»**.

## Синхронизация данных

### Обновляемые данные

При успешном входе через SSO и/или при синхронизации Webim:

  * обновляет у оператора данные (имя, email и идентификатор SSO),

  * определяет совпавшие группы безопасности Webim по **DN** групп **Active Directory**,

  * применяет к оператору **роли и отделы**, заданные в совпавших группах безопасности Webim.

!!! Note "N.B."
    Если в настройках аккаунта включено ограничение на редактирование сотрудников, обновлённых через SSO (`sso.disable_editing_agents_updated_by_sso=true`), такие учётные записи могут быть частично или полностью недоступны для редактирования в панели управления (подробнее про параметры смотрите в статье: [SSO и режимы авторизации](https://webim.ru/kb/devops/active-directory/sso-configuration.html)).

### Ручная синхронизация всех сотрудников

Если в аккаунте разрешена ручная синхронизация (настройка `sso.allow_manual_synchronization = true`), в разделе **«Сотрудники»** отображается кнопка с подсказкой **«Синхронизация данных с Active Directory»** (подробнее про параметры смотрите в статье: [SSO и режимы авторизации](https://webim.ru/kb/devops/active-directory/sso-configuration.html)).

![Синхронизация данных с Active Directory](https://webim.ru/kb/img/for-admins/active-directory/operator-sso-synchronization.webp){ style="width: 1350px; max-width: 100%" }

Нажатие запускает синхронизацию сотрудников, у которых задан идентификатор SSO.

Также администраторам доступна кнопка **«Сбросить неудачные попытки входа»**.

![Сброс неудачных попыток входа](https://webim.ru/kb/img/for-admins/active-directory/operator-sso-reset.webp){ style="width: 1350px; max-width: 100%" }

Кнопка сбрасывает счетчик неудачных попыток входа сотрудников в панель управления Webim. Используйте её, если сотрудник (или несколько сотрудников) не может войти из-за блокировки после многократного ввода неверного пароля.

Особенности:

  * сброс выполняется для **всех** сотрудников аккаунта;

  * действие доступно только пользователям с правами администратора;

  * операция фиксируется в [истории действий (action log)](https://webim.ru/kb/for-admins/action-log.html) аккаунта.

## Проверка работы с несколькими доменами

Для проверки многодоменной конфигурации подготовьте в каждом домене пользователей с ролями оператора, администратора и супервизора. Дополнительно подготовьте в разных доменах двух пользователей с одинаковым `sAMAccountName`: их идентификаторы SSO должны различаться частью после символа `@`.

Проверьте следующие сценарии:

  1. Войдите через SSO под пользователями из каждого домена.

  1. Откройте профили созданных или обновлённых операторов и на вкладке **«Настройки SSO»** убедитесь, что идентификаторы сохранены в формате `sAMAccountName@DOMAIN` и содержат нужный домен.

  1. Выполните ручную синхронизацию и убедитесь, что данные, роли и отделы пользователей из каждого домена обновились корректно.

  1. Повторите вход и синхронизацию для пользователей с одинаковым `sAMAccountName`. Убедитесь, что **Webim** сопоставил их с разными операторами и не перезаписал данные одного пользователя данными другого.

## Ошибки и возможные проблемы

Если у вас возникли проблемы со входом или синхронизацией в Active Directory, смотрите статью [«Диагностика и типовые ошибки»](https://webim.ru/kb/devops/active-directory/troubleshooting.html).

---

Источник: https://webim.ru/kb/for-admins/active-directory-operators-and-security-groups.html
