无法使用 AEM 中的任何系统用户为捆绑派生用户名

Cannot derive user name for bundle with any system user in AEM

在 AEM 6.1 环境中,我试图避免使用已弃用的方法 getAdministrativeResourceResolver 在 java class.

中获取资源解析器

我创建了系统用户并使用了符合正确标准的现有系统用户(rep:authorizableId,jcr:uuid,rep:principalName 属性被填充并且 jcr:primaryType 属性 是 rep:SystemUser)

我将 Apache Sling Service User Mapping Service 配置为具有服务映射 org...:modifyJCR=oauthservice(或我尝试过的相应用户)

Screenshot of configuration

访问getServiceResourceResolver方法的代码:

BundleContext context = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
ServiceReference ref = context.getServiceReference(ResourceResolverFactory.class.getName());
resolverFactory = (ResourceResolverFactory) context.getService(ref);
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "modifyJCR");
resourceResolver = resolverFactory.getServiceResourceResolver(param);

但是,我的代码中仍然出现此错误: Cannot derive user name for bundle org... [491] and sub service modifyJCR

在 making/using 系统用户配置服务用户映射服务后,是否还有其他人 运行 遇到此错误?

是否必须由调用代码的用户模拟系统用户? java class 通过工作流调用的 ecma 脚本调用,我以管理员身份登录。我已尝试将管理员组添加为多个用户的模仿者,但收到错误消息。

事实证明 org.apache.sling.api 包的版本太旧 (2.2.4),无法使用新方法绕过已弃用的方法。由于在 AEM 6.2 之前无法升级(我们不希望版本冲突),因此我需要使用已弃用的方法。较新的版本(例如 2.9.0)应该允许使用 Apache Sling 服务用户映射服务。我从不同部门的同事那里找到了这个信息,他们在本地尝试了类似的设置,使用较新的 2.9.0 版本并且它有效,而旧版本对他们不起作用。希望这可以帮助那些在遵循 creating/using 系统用户的解决方案并配置映射器服务但仍然出现登录异常后卡住的人。

这也适用于 getServiceResourceResolver 方法,无需对 sling api 版本进行任何修改。只需确保包路径在 Apache 映射服务控制台中正确注册。这应该与 pom.xml

中提到的组 ID 和工件 ID 相匹配