编程语言
首页 > 编程语言> > java – 无法在AEM中为任何系统用户派生bundle的用户名

java – 无法在AEM中为任何系统用户派生bundle的用户名

作者:互联网

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

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

我将Apache Sling 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);

但是,我仍然从我的代码中收到此错误:
无法为bundle org … [491]和子服务modifyJCR派生用户名

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

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

解决方法:

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

标签:aem,sling,java
来源: https://codeday.me/bug/20190824/1704436.html