Как получить / создать / олицетворять InitiatorSession в рабочем процессе AEM
В рабочем процессе AEM, когда я пытаюсь олицетворять workflowSession для инициатора, возникает исключение:
javax.security.auth.login.FailedLoginException: олицетворение не разрешено.
Мне обязательно нужен сеанс инициатора, чтобы вызвать какую-то задачу в моем рабочем процессе, ранее я использовал это, используя:
initiatorSession= adminSession.impersonate(new SimpleCredentials(initiatorUser,"".toCharArray()));
где adminSession теперь устарел, и мы сейчас используем системных пользователей, и поэтому я не могу выдать себя за пользователя системы за пользователя-инициатора, какие-либо предложения?
2 ответа
Вам нужна учетная запись пользователя, которая имеет разрешение на олицетворение. Ваша учетная запись службы должна быть разрешенным имитатором для пользователя, которого она пытается выдать.
Попробуйте контролировать разрешения с соответствующими группами пользователей.
Я не знаю ваш вариант использования, но вы не должны выдавать себя за инициатора, если рабочий процесс теперь назначен новому пользователю. Вы всегда можете адаптировать WorkflowSession
к Session
: Session session = workflowSession.adaptTo(Session.class)
который даст вам сеанс инициаторов, если рабочий процесс не прошел пользовательский шаг и не изменился на нового пользователя. В противном случае вы можете создать системный сеанс пользователя, как вы упомянули, и использовать его.