Hello, a pleasure to greet you
I have two sites, one is hosted at /content/site1 and the other at /content/site2. I have a role called author_site1 and another called author_site2. The error I'm experiencing is when I assign a user to both the author_site1 group and the author_site2 group, it removes the permission to view both contents.
I have tried different ways to manage permissions:
As an additional note, I adjust all these permissions with jcr:all. I have also tried modifying permissions in the 'Permissions' tab of each content, and I tried assigning the deny-all group in the 'Details' PopUp to the /content path, but it didn't work either.
There is also a group that is always added by default called 'everyone'. I have version 6.5.18 of AEM.
Solved! Go to Solution.
Topics help categorize Community content and increase your ability to discover relevant content.
Views
Replies
Total Likes
Hi @Juan_CarlosOr2 ,
Group: author_site1
Allow jcr:read or jcr:all on:
- /content/site1
- /apps/<your-site1-components>
- /conf/<your-site1-conf>
- /etc/clientlibs/<your-site1-libs> (if used)
- /var/workflow (if workflow is needed)
Group: author_site2
Allow jcr:read or jcr:all on:
- /content/site2
- /apps/<your-site2-components>
- /conf/<your-site2-conf>
- /etc/clientlibs/<your-site2-libs> (if used)
- /var/workflow (if workflow is needed)
Shared Read Access Group
Create a group called site-authors-base with read-only access to:
- /apps
- /libs
- /etc
- /conf
- /var
- /content/dam (if shared assets exist)
- /content/experience-fragments (if shared XFs exist)
Then make author_site1 and author_site2 members of site-authors-base.
Regards,
Amit
Views
Replies
Total Likes
Don't use deny rule as it has preference, it may conflict with use case.
Only use allow permission e.g. author_site1 group, allow /content/site1
Yes, I have also tried removing the deny-all and leaving only the allow /content/site1 or /content/site2, but this causes nothing to be visible. I can only see something when I also add /, but this causes all contents to be visible, even those that shouldn't be.
Views
Replies
Total Likes
You also need read group which allow read only access to other content which is required to render a page/template /apps, /etc, /var, /conf etc.
Views
Replies
Total Likes
This issue you're facing is a common challenge in AEM when dealing with overlapping deny permissions across multiple groups. Here's a clear explanation of what's happening and how to fix it:
AEM permission evaluation is additive but with precedence for deny rules. This means:
Allow permissions from one group can be overridden by deny permissions from another.
When a user belongs to multiple groups, any deny takes precedence over allow — even if the allow is more specific.
In your case:
When you assign both author_site1 and author_site2 to a user, the deny rules from each group cancel out the allow rules of the other, effectively blocking access to both sites.
Here’s how to fix it:
Remove all deny rules from author_site1 and author_site2.
For each group:
Grant only the required permissions to the relevant path.
author_site1 → allow on /content/site1
author_site2 → allow on /content/site2
Do not add any permissions (allow/deny) to /content itself.
Let the lack of permissions act as implicit denial for other paths.
This way, users will only have access to the paths explicitly allowed.
Group: author_site1
Allow (jcr:all) on /content/site1
Group: author_site2
Allow (jcr:all) on /content/site2
No deny anywhere — especially not on /content or across-site paths
Views
Replies
Total Likes
"This case causes no content to be visible. If I only add allow /content/site1, I don't see any content, but when I add /, then the contents are visible, including contents that shouldn't be seen."
Views
Replies
Total Likes
Please try either of these options or if you can share a screenshot of any reference then it will be useful for further analysis
Approach 1:
for group author_site1
deny jcr:all on /content
allow jcr:all on /content/jcr:content
allow (your permissions) on /content/author_site1
for group author_site2
deny jcr:all on /content
allow jcr:all on /content/jcr:content
allow (your permissions) on /content/author_site2
Approach 2
or create a super group something like
author_default
deny jcr:all on /content
allow jcr:all on /content/jcr:content
add this as a member of everyone
then
for group author_site1
allow (your permissions) on /content/author_site1
add this group as a member of author_default
for group author_site2
allow (your permissions) on /content/author_site2
add this group as a member of author_default
Views
Replies
Total Likes
I just tried this approach, denying causes no content to be displayed, another point, I had to create the /content/jcr:content node as it didn't exist
Views
Replies
Total Likes
Yes, if you are using repoinit scripts (assuming) then first you have to create all the mutable paths.
Views
Replies
Total Likes
Hi @Juan_CarlosOr2 ,
Group: author_site1
Allow jcr:read or jcr:all on:
- /content/site1
- /apps/<your-site1-components>
- /conf/<your-site1-conf>
- /etc/clientlibs/<your-site1-libs> (if used)
- /var/workflow (if workflow is needed)
Group: author_site2
Allow jcr:read or jcr:all on:
- /content/site2
- /apps/<your-site2-components>
- /conf/<your-site2-conf>
- /etc/clientlibs/<your-site2-libs> (if used)
- /var/workflow (if workflow is needed)
Shared Read Access Group
Create a group called site-authors-base with read-only access to:
- /apps
- /libs
- /etc
- /conf
- /var
- /content/dam (if shared assets exist)
- /content/experience-fragments (if shared XFs exist)
Then make author_site1 and author_site2 members of site-authors-base.
Regards,
Amit
Views
Replies
Total Likes
We have finally taken this approach, it is not the result we initially expected but it works for us. In addition we also gave read permission to the root "/"
The end result is that you can read all the content, but the difference is in the writing and publishing permissions that each group has.
Thank you all
Views
Replies
Total Likes