如何在没有显式身份验证的情况下在Spring Security中授予ACL?

时间:2012-06-22 11:06:52

标签: spring-security acl

当我创建新实体时,我想向此新实体授予ACL权限(也称为ACL条目)。到目前为止很容易: - )

问题出现在以下情况中:

  • 最终用户无需在网站上进行身份验证即可创建实体。
  • 持久保存此新实体的服务因此在没有身份验证上下文的情况下运行。
  • 但是:要授予ACE,需要有一个活动的身份验证上下文。

Spring的JdbcMutableAclService使用SecurityContextHolder.getContext().getAuthentication()来获取当前的身份验证,因此似乎无法绕过此要求。

非常感谢任何想法!

1 个答案:

答案 0 :(得分:2)

自己找到答案:

在Web应用程序中,始终是身份验证上下文。如果未对用户进行身份验证,则身份验证为org.springframework.security.authentication.AnonymousAuthenticationToken,该身份验证具有一个授予的权限:ROLE_ANONYMOUS

因此,授予此用户创建ACL的权利很简单。只需配置PermissionGrantingStrategy即可使用此角色授权请求。