我正在 AEMaaCS 中创建一个自定义 WorkflowProcess,它代表工作流发起者进行一些更改。如何获得具有工作流发起者权限的ResourceResolver?
在 WorkflowProcess 中我可以获得一个 ResourceResolver,例如像这样:
resourceResolverFactory.getResourceResolver(
Collections.singletonMap(JcrResourceConstants.AUTHENTICATION_INFO_SESSION,
workflowSession.getSession())
但是这个解析器似乎是针对用户ID的
workflow-process-service
。但出于安全原因,我想将解析器限制为发起者权利。怎么做?我尝试了这个,但这会引发“不允许冒充”LoginException:
resourceResolverFactory.getResourceResolver(
Collections.singletonMap(ResourceResolverFactory.USER_IMPERSONATION,
workItem.getWorkflow().getInitiator())
对于
getResourceResolver
与 ResourceResolverFactory.USER
我没有密码......
非常感谢!
我很确定这是不可能的。
我有一个类似的用例,最终编写代码来在工作流程执行期间检查启动器权限,而不是获取包含启动器身份验证信息的会话。
另一种方法是通过 servlet 而不是工作流来实现逻辑(如果需要,将批处理委托给 sling 作业),您可以在其中从请求中获取用户。