0

希望有人在这里可以帮助我解决难题。

我们正在尝试从我们的应用程序中删除所有管理员会话,但由于 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 的设计限制)。但是,我已通过 useradmin UI 确认用户对整个存储库拥有完全权限。

不幸的是,当我调用此代码时,我仍然收到以下错误:

2020-06-22 17:46:56.017 INFO [za.co.someplace.forms.core.servlets.IntegrationTestServlet] 尝试创建组:TestingGroup1 与用户 fwi-admin-user 2020-06-22 17:46:56.025 错误[za.co.someplace.forms.core.servlets.IntegrationTestServlet] 尝试创建组时出错。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 错误,还是我在这里做错了什么?

提前致谢

4

1 回答 1

2

所以看起来这个错误实际上是在旧的用户管理界面中。它不允许我将我的系统用户添加到管理员组中,但这在新的触摸 UI 管理界面中是可能的。

于 2020-06-23T04:08:09.933 回答