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

Spring security 如何在没有显式身份验证的情况下在Spring Security中授予ACL?,spring-security,acl,Spring Security,Acl,当我创建一个新实体时,我想向这个新实体授予ACL权限(也称为ACL条目)。到目前为止很容易:-) 问题出现在以下场景中: 最终用户可以创建实体,而无需在网站上进行身份验证 因此,持久化此新实体的服务在没有身份验证上下文的情况下运行 但是:要授予ACEs,需要有一个活动的身份验证上下文 Spring的JdbcMutableAclService使用SecurityContextHolder.getContext().getAuthentication()来获取当前的身份验证,因此似乎无法规避此要

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

问题出现在以下场景中:

  • 最终用户可以创建实体,而无需在网站上进行身份验证
  • 因此,持久化此新实体的服务在没有身份验证上下文的情况下运行
  • 但是:要授予ACEs,需要有一个活动的身份验证上下文
Spring的
JdbcMutableAclService
使用
SecurityContextHolder.getContext().getAuthentication()
来获取当前的身份验证,因此似乎无法规避此要求


任何想法都非常感谢

我自己找到了答案:

在web应用程序中,始终存在身份验证上下文。如果用户未经身份验证,则身份验证为
org.springframework.security.authentication.AnonymousAuthenticationToken
,它具有一个单独的授权:
ROLE\u ANONYMOUS

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