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

时间:2016-06-01 17:11:23

标签: java aem sling

在AEM 6.1环境中,我试图避免使用已弃用的方法getAdministrativeResourceResolver来获取java类中的资源解析器。

我创建了系统用户并使用了符合正确标准的现有系统用户(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

在制作/使用系统用户以及配置服务用户映射服务之后,是否还有其他人遇到此错误?

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

2 个答案:

答案 0 :(得分:5)

事实证明,org.apache.sling.api包的版本太旧了(2.2.4),无法绕过不推荐使用的方法。由于在AEM 6.2之前无法升级(我们不希望版本发生冲突),因此我需要使用弃用的方法。更新版本(如2.9.0)应允许使用Apache Sling Service用户映射服务。我从一个不同部门的同事那里找到了这些信息,他们尝试使用较新版本的2.9.0在本地进行类似的设置,并且在旧版本不适合他们的情况下工作。希望这可以帮助那些在遵循创建/使用系统用户的解决方案并配置映射器服务但仍然获得登录异常后陷入困境的人。

答案 1 :(得分:1)

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

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