问题标签 [spring-security-acl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - @PostFilter 不适用于 Spring @Aspect
我正在尝试做这样的事情:
方面工作良好,但最后一种方法executeWithFilter
是在没有过滤的情况下完成的。同时,如果我添加@PostFilter(value = "hasPermission(filterObject, 'READ')")
到常规服务方法中,过滤会起作用。甚至可以@PostFilter
在方面使用吗?
java - Spring Security ACL 总是将 anonymousUser 设置为 Owner
我正在使用 spring-security-acl 进行授权。
我想注册一个新用户并授予该用户仅修改其自身的权限。我正在执行以下步骤:
- 将用户添加到 mySql 数据库中的用户表中。
- 设置此用户的权限(将自身修改为 ACL_* 表的权限)
但是当我检查acl_object_identity
表owner_sid
时,对象的始终是anonymousUser
.
spring - Spring Security ACL 是否应该与 WebSecurityExpressionHandler 一起使用?
我按照本指南使用 ACL 设置安全性,效果很好。之后我还尝试在 WebSecurityConfigurerAdapter 中实现 ACL。所以我设置了一个 bean,它会创建一个 DefaultWebSecurityExpressionHandler:
我会将它应用于我的 WebSecurityConfigurerAdapter 中的 HttpSecurity:
但这只是行不通。这个完全相同的表达式在 @PreAuthorize 标记中起作用,但在这里它不起作用。我调试了一下,发现准确的故障点在Spring提供的JdbcAclServiceImpl类中,方法如下:
即使提供的参数与我使用 @PreAuthorize 标记时相同,result.containsKey(oid)
但即使我可以在调试器中看到它并且我看到oid
应该匹配它,也只是无法找到 acl。
所以我的问题是:Spring Security ACL 是否应该工作以保护路由,还是仅用于保护方法?
顺便说一句,我正在使用 Spring Boot 2.5.5
spring - 插入 Spring Security ACL
我了解,要使用 Spring 安全 ACL,我们在数据库中创建 4 个强制表 (acl_*)。当创建一个新对象时,在表“acl_object_identity”中创建条目,并且安全授权规则在表“acl_entry”中,例如哪个用户/角色可以读取/写入对象。当任何用户尝试获取或更新对象时,这些规则稍后会被验证。
在网上的大部分例子中,表中的条目都是通过SQL完成的,在生产中不会总是这样 问题是关于插入?我认为在对象创建点(控制器中的这种 POST 方法)需要两件事:
- 检查用户是否有权创建对象,这可以使用 Spring security 而不是 spring security acl 来完成
- 在 acl_object_identity 和 acl_entry 表中插入条目。这是额外的代码(在 spring 安全 acl 代码之外),并且在(理想情况下)与在数据库中插入新对象相同的事务中完成
完成上述两个操作后,在验证读取/更新(对先前创建的对象的 GET、PUT、DELETE 等)请求时使用 spring security acl。
我的理解正确吗?