Hoping someone on here can help me out of a conundrum.
We are trying to remove all Admin sessions from our application, but are stuck with a few due to JCR Access Denied exceptions. Specifically, when we try to create AEM groups or users with a service user we get an Access Denied exception. Here is a piece of code written to isolate the problem:
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(); } }
Notice that I'm using a subservice name titled userManagementService, which maps to a user titled fwi-admin-user. Since fwi-admin-user is a service user, I cannot add it to the administrators group (This seems to be a design limitation on AEM). However, I have confirmed that the user has full permissions to the entire repository via the useradmin UI.
Unfortunately, I still get the following error when I invoke this code:
2020-06-22 17:46:56.017 INFO [za.co.someplace.forms.core.servlets.IntegrationTestServlet] Attempting to create group: TestingGroup1 with user fwi-admin-user 2020-06-22 17:46:56.025 ERROR [za.co.someplace.forms.core.servlets.IntegrationTestServlet] Error while attempting to create group. javax.jcr.AccessDeniedException: OakAccess0000: Access denied at org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:231) at org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:212) at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.newRepositoryException(SessionDelegate.java:670) at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:496)
Is this an AEM bug, or am I doing something wrong here?
Thanks in advance
Solved! Go to Solution.
Views
Replies
Total Likes
Your service user should be part of user-administrators group or administrator group to do user management task.
Views
Replies
Total Likes
Your service user should be part of user-administrators group or administrator group to do user management task.
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes