Показать сообщение отдельно
Старый 21.03.2023, 15:43   #1  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
AX 2012 R3 Ошибка проверки прав доступа при обработке Workflow
Здравствуйте.
AX 2012 R3 R3 CU 11 билд 6.3.4000.127
Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64)

При попытке назначить рабочий элемент Workflow некоторым пользователям Ax возникает ошибка проверки прав доступа.
Цитата:
Не удается создать рабочий элемент. Недостаточно прав для пользователя annakoc.
(S)\Classes\SysWorkflowWorkItem\delegate 111
(S)\Classes\WorkflowWorkItem\delegateWorkItem 55
(C)\Classes\WorkflowStatusReassignWorkItem\run 5
(C)\Classes\WorkflowStatusReassignWorkItem\main 14
_____________________
Большинство пользователей работают без ошибок.
Ошибка возникает только для некоторых пользователей.
Пользователь имеет полные права доступа (Системный администратор)
Пользователь изначально был заведен в Active Directory и успешно работал. Затем ушел в декретный отпуск, учетная запись в AD при этом была заблокирована. После возврата из декрета запись в AD разблокировали. Но при работе с WF стала возникать ошибка проверки прав доступа.
Если сделать проверку прав доступа из кода под этим пользователем - то результат успешный. Полный доступ. При назначении WF - ошибка проверки прав доступа.
Ошибка воспроизводится стабильно.
Права доступа проверяются в методе
Цитата:
\Classes\SysWorkflowDocument\assert
оператором
Цитата:
result = runAs(user, classNum(SysWorkflowDocument), staticMethodStr(SysWorkflowDocument, assertAsUser), args);
Ошибка прав доступа возникает в методе
Цитата:
\Classes\SysWorkflowDocument\assertMenuItem
при проверке
Цитата:
ret = securityRights.menuItemAccessRight(_type == MenuItemType:: Display ? SecurableType::MenuItemDisplay : SecurableType::MenuItemAction, _name, '') > AccessRight::NoAccess;
При просмотре успешных проверок для других пользователей было выяснено, что при проверке вызывается хранимая процедура на SQL CreateUserSessions.
При проверке прав ошибочного пользователя - до вызова этой хранимой процедуры дело не доходит. Видимо, ошибка на клиенте происходит раньше, до обращения к SQL.
Ошибка происходит на клиенте, так как это видно при анализе событий Windows. Ошибок на АОС не возникает.
В EventViewer на клиенте показывает ошибку 0xc0000005

Клиенты и АОСы все одной версии.
Все возможные перезапуски, сбросы кэшей, удаление AUC файлов были сделаны.
Пользователя в АХ пересоздавали.
SID в AD и в AX одинаковый.

Последний раз редактировалось ta_and; 21.03.2023 в 17:23.