Перевоплощение¶
1. Что это¶
Перевоплощение — механизм, позволяющий администратору (или пользователю с соответствующими правами) работать в системе от имени другого пользователя. Перевоплотившийся видит то же, что видит целевой пользователь. Используется для отладки прав, настройки интерфейса и поддержки.
Не путать с замещением: замещение передаёт права, а перевоплощение создаёт новую сессию от имени целевого пользователя.
2. Кто может перевоплощаться¶
Право перевоплощаться можно получить тремя способами:
| # | Способ | Условие |
|---|---|---|
| 1 | Системная группа «Администраторы» | Пользователь в группе Administrators, и группе не выдано спецправо DENYIMPERSONATION |
| 2 | Право группы на группу | Право «Перевоплощаться в членов группы». Не-админ не может перевоплощаться в администратора |
| 3 | EWS (Exchange) | Для синхронизации календаря. Настройка CalendarExchangeUseImpersonate или общая настройка «Использовать перевоплощение» |
Порядок проверки прав¶
Возможность перевоплощения система проверяет по шагам:
- Если у пользователя есть спецправо
DENYIMPERSONATION— перевоплощение запрещено. - Если пользователь — администратор — перевоплощение разрешено (в любого пользователя).
- Если целевой пользователь — администратор, а инициатор — нет — запрещено.
- Иначе проверяется право группы на группу «Перевоплощаться в членов группы».
3. Спецправо DENYIMPERSONATION¶
Специальное право, назначаемое группе. Если пользователь входит хотя бы в одну группу с этим правом — перевоплощение для него запрещено (даже если он администратор).
Ограничение: нельзя назначить DENYIMPERSONATION группе «Администраторы».
Право хранится в таблице GroupPermissionsToSpecialActions.
4. API¶
Перевоплощением можно управлять через REST API.
4.1 Начать перевоплощение¶
Запрос:
POST /api/auth/{userId}/impersonate
Ответы:
204 No Content— успешно, последующие запросы идут от имени целевого пользователя;403 Forbidden— нет прав или попытка вложенного перевоплощения.
Ограничение: вложенное перевоплощение запрещено — при попытке перевоплотиться, уже будучи перевоплощённым, возвращается 403.
4.2 Завершить перевоплощение¶
Запрос:
POST /api/auth/undotransformation
Ответ: 204 No Content — сессия возвращается к реальному пользователю.
5. Механика сессии (JWT)¶
Что происходит на уровне сессии при перевоплощении (полезно для диагностики):
- Система создаёт новый JWT-токен.
- В новом токене
SessionUserId— целевой пользователь,OldUserId— инициатор. - Поле
ImpersonatedUserIdдоступно всем сервисам для проверки, кто инициатор. - Все действия выполняются от имени целевого пользователя.
- При завершении перевоплощения токен возвращается к исходному пользователю.
- Проверяется наличие действующей лицензии у целевого пользователя. Если лицензии нет — перевоплощение не выполняется.
- Токен перевыпускается только после успешной проверки лицензии.
6. Аудит (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).
Просмотр: вкладка «Журнал» в профиле пользователя. Видят: администраторы (журналы всех пользователей), пользователь (свой журнал).
7. Защита данных при перевоплощении¶
7.1 Конфиденциальность¶
С версии 2.268.326 перевоплощение блокируется конфиденциальностью. При перевоплощении проверяются права обоих пользователей — инициатора и целевого. Если целевой пользователь — подписчик конфиденциальной задачи, а перевоплощающийся администратор — нет, содержимое скрывается, а задача исключается из основных списков.
Что скрывается:
- Текст задачи →
(Текст задачи скрыт) - Текст комментариев →
(Комментарий скрыт) - Файлы — недоступны (проверка доступа учитывает обоих пользователей)
- Попытка добавить или переслать комментарий к конфиденциальной задаче — отклоняется
Что фильтруется (задача исчезает из списков):
- Ленты задач, комментариев и обсуждений
- История просмотров
- Глобальный поиск
Что остаётся видимым (известные ограничения текущей версии):
- Избранное — задача остаётся в списке, заголовок заменяется на
(Текст задачи скрыт) - Счётчики непрочитанных и сигнальные события — продолжают учитывать конфиденциальные чаты
- Push-уведомления, всплывающие уведомления и события о новом сообщении — не блокируются
- Журнал попыток доступа из-под перевоплощения — пока не ведётся
7.2 Шифрование¶
Перевоплощение блокируется шифрованием. При перевоплощении проверяются права обоих — инициатора и целевого пользователя. Оба должны иметь право «Просмотр зашифрованных задач», чтобы увидеть расшифрованные данные.
Что скрыто при отсутствии права хотя бы у одного из двух:
- Зашифрованные ДП — пустые или скрытые
- Текст задачи — не отображается
- Файлы — недоступны для скачивания
- Комментарии — текст скрыт
7.3 Матрица¶
Сводно по двум механизмам разграничения доступа:
| Защитный механизм | Замещение | Перевоплощение |
|---|---|---|
| Конфиденциальность | Заблокировано | Заблокировано (с 2.268.326) |
| Шифрование | Заблокировано | Заблокировано (оба должны иметь право) |
| Конфиденциальность + шифрование | Заблокировано | Заблокировано |
8. Интерфейс¶
В веб-версии¶
В веб-интерфейсе перевоплощение управляется так:
- Кнопка перевоплощения — в профиле пользователя (панель инструментов) и в справочнике «Сотрудники» (при наведении).
- Индикатор перевоплощения — зелёная полоса в верхней панели с именем целевого пользователя.
- Выход — крестик на индикаторе.


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