将Spring Security ACL与Spring Data REST结合使用

查理

我正在尝试授权Spring Data REST公开的api。到目前为止,我已经能够进行基于角色的授权,即:

@RepositoryRestResource(path = "book")
public interface BookRepository extends JpaRepository<Book, Long> {

    @PreAuthorize("hasRole('ROLE_ADMIN')")
    <S extends Book> Book save(Book book);
}

同样在同一项目中,我有一个具有ACL机制的服务层,该服务层正在运行。

我无法在Spring Data REST中使用PostFilter表达式,即:

@PostFilter("hasPermission(filterObject, 'read') or hasPermission(filterObject, admin)")
List<Book> findAll();

如果有人将ACL与Spring Data REST一起使用,那将有很大的帮助。

注意:我知道以下未解决的问题:

https://jira.spring.io/browse/DATAREST-236

https://jira.spring.io/browse/SEC-2409

查理

使用JpaRepository遮盖了List <Book> findAll()方法。然后,我使用了CrudRepository,并应用了PostFilter。

有关更多详细信息,请在GitHub上找到一个示例项目:https : //github.com/charybr/spring-data-rest-acl

基于ACL的授权适用于Spring Data REST公开的以下实体。

import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.security.access.method.P;
import org.springframework.security.access.prepost.PostFilter;
import org.springframework.security.access.prepost.PreAuthorize;

@RepositoryRestResource(path = "book")
public interface BookRepository extends CrudRepository<Book, Long> {

    @PreAuthorize("hasRole('ROLE_ADMIN') or hasPermission(#book, 'write')")
    <S extends Book> Book save(@P("book") Book book);

    @Override
    @PostFilter("hasPermission(filterObject, 'read') or hasPermission(filterObject, admin)")
    Iterable<Book> findAll();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将AOP与Spring Security ACL结合使用

来自分类Dev

使用Spring Security ACL

来自分类Dev

Spring Security插入ACL:ConcurrentModificationException

来自分类Dev

Spring Security插入ACL:ConcurrentModificationException

来自分类Dev

使用Spring Security ACL授予对现有对象身份的权限

来自分类Dev

Spring Security ACL:我无法更新 ACL (SQLIntegrityConstraintViolationException)

来自分类Dev

在Spring Security Acl中授予权限

来自分类Dev

Spring Security AccessDecisionManager:roleVoter,Acl选民

来自分类Dev

Spring Security ACL管理权限

来自分类Dev

使用Spring Data Rest + Spring Security的REST端点的Thymeleaf异常解析模板

来自分类Dev

如何将Spring DelegatingFilterProxy与多个过滤器和Spring Security结合使用?

来自分类Dev

Spring Security REST API

来自分类Dev

将LDAP和DB身份验证与Spring Security结合使用

来自分类Dev

结合使用Spring Security AUTHORIZATION承载和CXF

来自分类Dev

使用Spring Security保护REST端点

来自分类Dev

使用Spring Security保护REST API

来自分类Dev

Spring Security-ACL readAclsById未按SID过滤

来自分类Dev

将动态数据源路由与spring-data-rest相结合

来自分类Dev

使用Spring Security的PasswordEncoder

来自分类Dev

将Spring REST服务与Wicket结合

来自分类Dev

Grails Spring Security Rest注销

来自分类Dev

Spring Security REST和Angular

来自分类Dev

Grails Spring Security REST + LDAP

来自分类Dev

Spring Security阻止Rest Controller

来自分类Dev

通过Spring Security保护REST

来自分类Dev

Spring Security和REST API?

来自分类Dev

将Azure AD高级自定义角色与Spring Security结合使用以进行基于角色的访问

来自分类Dev

使用Netbeans IDE将Spring Security集成到Grails中

来自分类Dev

将Spring Security与Oracle&Grails一起使用

Related 相关文章

热门标签

归档