有没有办法为AEM中的资产提供安全性和授权

时间:2016-08-02 00:06:22

标签: java cq5 aem sling

有没有办法为AEM中的资产提供安全性和授权?

我们将资产放到页面上,登录后最终用户会查看所有资产。我们希望限制页面上的资产应仅显示给特定用户(即使他们可以登录)。如果用户具有资产的URL,并且在登录后他们能够查看该资产。

要求是将资产限制为特定用户,即使他们可以登录页面。

欣赏你的时间。

2 个答案:

答案 0 :(得分:1)

AEM支持OOTB此功能。您需要构建具有对资产的正确访问权限的正确组。默认情况下,发布实例' anonymous'用户对/ content / dam有读权限。您需要执行以下操作 -

  • 删除匿名用户访问权限,同时检查要禁用访问权限的所有其他组并相应地更新它们(您需要使用/ useradmin控制台执行此操作)
  • 根据所需的访问权限创建可以为其分配不同用户的不同组(最好通过组来管理访问权限而不是用户)
  • 为这些组提供对/ content / dam
  • 下相关文件夹的访问权限
  • 根据需要将用户添加到这些群组

现在,当用户登录时,他们只能访问仅限于其组的资产。

有关AEM中用户管理的更多详细信息,请阅读this article

答案 1 :(得分:0)

正如您所说,您希望作者能够控制哪些组可以查看资产。因此在组件的作者对话框中填充所有用户组以使其可供作者配置。然后在您的代码中检查该组是否具有针对资产路径的权限 -

UserManager userManager = resourceResolver.adaptTo(UserManager.class);
Authorizable auth  = userManager.getAuthorizable(<<group configured by author>>);
JackrabbitAccessControlManager acm = (JackrabbitAccessControlManager) adminSession.getAccessControlManager();
Set<Principal> principals = new HashSet<Principal>();
principals.add(auth.getPrincipal());
Privilege[] privileges = acm.getPrivileges(<<current assets path>>, principals);

您可以检查权限数组的权限。如果组具有权限而不仅仅呈现资产。