Перевоплощение¶
Перевоплощение — механизм, позволяющий администратору (или пользователю с соответствующими правами) работать в системе от имени другого пользователя. Перевоплотившийся видит то же, что видит целевой пользователь; используется для отладки прав, настройки интерфейса и поддержки. Не путать с замещением: замещение передаёт права, а перевоплощение создаёт новую сессию от имени целевого пользователя. Документ описывает права и порядок их проверки, REST API начала и завершения, механику JWT-сессии, аудит, влияние конфиденциальности и шифрования, интерфейс и действующие ограничения.
Права на перевоплощение и порядок их проверки¶
Право перевоплощаться можно получить тремя способами:
| # | Способ | Условие |
|---|---|---|
| 1 | Системная группа «Администраторы» | Пользователь в группе Administrators, и группе не выдано спецправо DENYIMPERSONATION |
| 2 | Право группы на группу | Право «Перевоплощаться в членов группы». Не-админ не может перевоплощаться в администратора |
| 3 | EWS (Exchange) | Для синхронизации календаря. Настройка CalendarExchangeUseImpersonate или общая настройка «Использовать перевоплощение» |
Возможность перевоплощения система проверяет по шагам:
- Если у пользователя есть спецправо
DENYIMPERSONATION— перевоплощение запрещено. - Если пользователь — администратор — перевоплощение разрешено (в любого пользователя).
- Если целевой пользователь — администратор, а инициатор — нет — запрещено.
- Иначе проверяется право группы на группу «Перевоплощаться в членов группы».
Спецправо DENYIMPERSONATION назначается группе. Если пользователь входит хотя бы в одну группу с этим правом — перевоплощение для него запрещено (даже если он администратор). Ограничение: нельзя назначить DENYIMPERSONATION группе «Администраторы». Право хранится в таблице GroupPermissionsToSpecialActions.
API перевоплощения: начало и завершение¶
Перевоплощением можно управлять через REST API. Для начала перевоплощения используется запрос:
POST /api/auth/{userId}/impersonate
Ответы:
204 No Content— успешно, последующие запросы идут от имени целевого пользователя;403 Forbidden— нет прав или попытка вложенного перевоплощения.
Ограничение: вложенное перевоплощение запрещено — при попытке перевоплотиться, уже будучи перевоплощённым, возвращается 403.
Завершение перевоплощения делается запросом:
POST /api/auth/undotransformation
Ответ: 204 No Content — сессия возвращается к реальному пользователю.
Механика сессии (JWT) при перевоплощении¶
Что происходит на уровне сессии при перевоплощении (полезно для диагностики):
- Система создаёт новый JWT-токен.
- В новом токене
SessionUserId— целевой пользователь,OldUserId— инициатор. - Поле
ImpersonatedUserIdдоступно всем сервисам для проверки, кто инициатор. - Все действия выполняются от имени целевого пользователя.
- При завершении перевоплощения токен возвращается к исходному пользователю.
- Проверяется наличие действующей лицензии у целевого пользователя. Если лицензии нет — перевоплощение не выполняется.
- Токен перевыпускается только после успешной проверки лицензии.
Аудит перевоплощений (таблица TransformationLog)¶
Каждое перевоплощение логируется в таблицу TransformationLog.
| Колонка | Тип | Описание |
|---|---|---|
TransformationLogID |
int, PK, Identity | ID записи |
OldUserID |
int, FK → Users | Инициатор перевоплощения |
NewUserID |
int, FK → Users | Целевой пользователь |
TransformationTime |
datetime | Время события |
UserComputerName |
varchar(300) | Имя компьютера / IP инициатора |
IsReturn |
bit | 0 = перевоплощение, 1 = возврат |
UserAgent |
varchar(512), NULL | User-Agent браузера |
Запись создаётся при: перевоплощении (IsReturn = 0) и возврате (IsReturn = 1).
Просмотр: вкладка «Журнал» в профиле пользователя. Видят: администраторы (журналы всех пользователей), пользователь (свой журнал).
Защита данных при перевоплощении: конфиденциальность, шифрование, матрица¶
С версии 2.268.326 перевоплощение блокируется конфиденциальностью. При перевоплощении проверяются права обоих пользователей — инициатора и целевого. Если целевой пользователь — подписчик конфиденциальной задачи, а перевоплощающийся администратор — нет, содержимое скрывается, а задача исключается из основных списков.
Что скрывается:
- Текст задачи →
(Текст задачи скрыт) - Текст комментариев →
(Комментарий скрыт) - Файлы — недоступны (проверка доступа учитывает обоих пользователей)
- Попытка добавить или переслать комментарий к конфиденциальной задаче — отклоняется
Что фильтруется (задача исчезает из списков):
- Ленты задач, комментариев и обсуждений
- История просмотров
- Глобальный поиск
Что остаётся видимым (известные ограничения текущей версии):
- Избранное — задача остаётся в списке, заголовок заменяется на
(Текст задачи скрыт) - Счётчики непрочитанных и сигнальные события — продолжают учитывать конфиденциальные чаты
- Push-уведомления, всплывающие уведомления и события о новом сообщении — не блокируются
- Журнал попыток доступа из-под перевоплощения — пока не ведётся
Шифрование также блокирует перевоплощение. При перевоплощении проверяются права обоих — инициатора и целевого пользователя. Оба должны иметь право «Просмотр зашифрованных задач», чтобы увидеть расшифрованные данные.
Что скрыто при отсутствии права хотя бы у одного из двух:
- Зашифрованные ДП — пустые или скрытые
- Текст задачи — не отображается
- Файлы — недоступны для скачивания
- Комментарии — текст скрыт
Сводно по двум механизмам разграничения доступа:
| Защитный механизм | Замещение | Перевоплощение |
|---|---|---|
| Конфиденциальность | Заблокировано | Заблокировано (с 2.268.326) |
| Шифрование | Заблокировано | Заблокировано (оба должны иметь право) |
| Конфиденциальность + шифрование | Заблокировано | Заблокировано |
Интерфейс перевоплощения: веб и мобильное приложение¶
В веб-интерфейсе перевоплощение управляется так:
- Кнопка перевоплощения — в профиле пользователя (панель инструментов) и в справочнике «Сотрудники» (при наведении).
- Индикатор перевоплощения — зелёная полоса в верхней панели с именем целевого пользователя.
- Выход — крестик на индикаторе.


В мобильном приложении перевоплощение также доступно.
Ограничения и связанные материалы¶
Перевоплощение работает с рядом ограничений:
| Ограничение | Описание |
|---|---|
| Вложенное перевоплощение | Запрещено. Нельзя перевоплощаться, будучи перевоплощённым |
| Лицензия | У целевого пользователя должна быть действующая лицензия (не-конкурентная). Проверка выполняется при начале перевоплощения; если лицензии нет — перевоплощение блокируется |
| Не-админ → админ | Пользователь без прав администратора не может перевоплотиться в администратора |
| DENYIMPERSONATION | Блокирует перевоплощение даже для администратора |
| Нельзя применить DENYIMPERSONATION к группе «Администраторы» | Защита от самоблокировки |
Связанные материалы:
- Права доступа к задачам — конфиденциальность и шифрование
- FAQ: видимость кнопки «Поставить отсутствие» — специальные права групп