希望这里有人能帮助我摆脱困境。
我们正在尝试从我们的应用程序中删除所有管理会话,但由于JCR拒绝访问异常,我们遇到了一些会话。具体来说,当我们尝试使用服务用户创建AEM组或用户时,我们会收到"拒绝访问"异常。下面是一段为隔离问题而编写的代码:
private void testUserCreation2() {
String groupName = "TestingGroup1";
Session session = null;
ResourceResolver resourceResolver = null;
String createdGroupName = null;
try {
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "userManagementService");
resourceResolver = resourceResolverFactory.getServiceResourceResolver(param);
session = resourceResolver.adaptTo(Session.class);
// Create UserManager Object
final UserManager userManager = AccessControlUtil.getUserManager(session);
// Create a Group
LOGGER.info("Attempting to create group: "+groupName+" with user "+session.getUserID());
if (userManager.getAuthorizable(groupName) == null) {
Group createdGroup = userManager.createGroup(new Principal() {
@Override
public String getName() {
return groupName;
}
}, "/home/groups/testing");
createdGroupName = createdGroup.getPath();
session.save();
LOGGER.info("Group successfully created: "+createdGroupName);
} else {
LOGGER.info("Group already exists");
}
} catch (Exception e) {
LOGGER.error("Error while attempting to create group.",e);
} finally {
if (session != null && session.isLive()) {
session.logout();
}
if (resourceResolver != null)
resourceResolver.close();
}
}
请注意,我使用的是名为 userManagementService 的子服务名称,该名称映射到名为 fwi-admin-user 的用户。由于fwi-admin-user是服务用户,因此我无法将其添加到管理员组(这似乎是AEM的设计限制(。但是,我已经确认用户通过用户管理员 UI 对整个存储库具有完全权限。
不幸的是,当我调用此代码时,我仍然收到以下错误:
2020-06-22 17:46:56.017 信息 [za.co.someplace.forms.core.servlets.IntegrationTestServlet] 尝试创建组:测试组 1 与用户 fwi-admin-user 2020-06-22 17:46:56.025 错误 [za.co.someplace.forms.core.servlets.IntegrationTestServlet] Error 尝试创建组时。javax.jcr.AccessDeniedException: OakAccess0000:访问被拒绝 org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:231( 在 org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:212( 在 org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.newRepositoryException(SessionDelegate.java:670( 在 org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:496(
这是一个AEM错误,还是我在这里做错了什么?
提前致谢
因此,似乎该错误实际上在旧的用户管理界面中。它不允许我将我的系统用户添加到 admninistrators 组中,但这在新的触摸 UI 管理界面中是可能的。