问题标签 [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.

0 投票
2 回答
137 浏览

spring - 需要有关 Web 应用程序安全设计的建议

我正在使用 spring security 为 Web 应用程序设计一个安全模块。有 3 个单独的战争(3 个应用程序)使用单独的登录,部署在 JBOSS 服务器中。要求是,如果用户在一个应用程序中通过身份验证,那么他应该能够在不登录的情况下访问其他应用程序。是否可以在 Web 应用程序之间共享安全上下文(不同的战争不在一个 EAR 中)。我们讨论了 SSO,但我们正试图通过 spring 安全性和应用服务器的支持来实现这一点。有什么办法吗?请提供您宝贵的建议和意见。如果您需要更多信息,请告诉我。

0 投票
1 回答
87 浏览

grails - Spring securtiy Acl 在 addPermission 上抛出空指针

我正在使用 Springsecurity-ACL-2.0-RC1 和 webflow 2.0.8.1

因此,当通过以下方式调用我的服务添加权限时:

基本上是:

我会得到一个 NullPointer:

好吧,我基本上已经尝试根据教程/示例应用程序重写我的服务 - 甚至使用了他们的代码,但基本上没有结果。

所以我对如何修复它的想法已经用完了,我正在考虑删除网络流,并简单地自己构建这个流。

谢谢西蒙

PS:这是我在stackoverflow上的第一个条目,所以如果我错过了重要信息,请告诉我,我会尽快添加

0 投票
1 回答
1085 浏览

spring - 用于 Spring Security 的 JCache ACL 缓存

我正在使用 Spring Security ACL,它需要定义缓存。到目前为止,我正在使用这个:

一切都很好。但是,我切换到使用jcache,现在返回一个与以下不兼容defaultAclJCacheFactory()的实例:javax.cache.CacheSpringCacheBasedAclCache

我试图搜索一个JCache实现,org.springframework.security.acls.model.AclCache但只有一个用于 spring 缓存和一个用于 EhCache。有没有计划推出一款jcache呢?

0 投票
0 回答
244 浏览

json - 如何使用 Spring Security 权限有条件地将字段添加到 JSON

我正在编写一个 REST Web 服务,并且我正在使用带有基于注释的配置的 Spring 4。

我还在使用 Spring 安全性进行 HTTP 基本身份验证和授权。

我有一个ItemRestPresentation纯粹用于表示层的类,它的实例是在我的控制器方法中使用另一个名为 Item 的类的实例(实际的域对象)创建的。ItemRestPresentation实例通过我的控制器方法转换为以下 JSON:

ItemRestPresentation 类:

生成的 JSON :

是否可以使用 Spring Security ACL 将实例的canDelete成员设置ItemRestPresentation为正确的值,具体取决于当前用户是否有权删除它?

0 投票
0 回答
755 浏览

spring - spring-security 如何从 AclPermissionCacheOptimizer 清除缓存

我们正在使用 AclPermissionCacheOptimizer 在 spring-security-core-3.1.3 版本中缓存 sids 的授权对象。

现在,每当我们为缓存对象授予对新 sid 的访问权限时,AclPermissionCacheOptimizer 没有缓存对象的新 sid,因此具有新 sid 的用户无权查看此对象(因为在缓存中找到此对象,它不从 db 加载数据)。我在想,只要一个新的 sid 可以访问缓存的对象,spring security 就应该清除这个缓存。

这是xml文件的样子:

我有哪些选项可以解决此问题?任何想法?

0 投票
0 回答
240 浏览

spring - 如何在spring security acl中实现RunAs

我想让用户运行另一个角色(即管理员角色:ROLE_USER_ADMIN)来更改另一个用户拥有的对象的权限。

  1. 创建具有“ROLE_RUN_AS_USERADMIN”权限的角色
  2. 在 config.groovy 中启用 RunAs

grails.plugin.springsecurity.useRunAs = true

grails.plugin.springsecurity.runAs.key = '*****'

  1. 赋予生成的角色更改 Acl 详细信息的权限

grails.plugin.springsecurity.acl.authority.changeAclDetails = 'ROLE_RUN_AS_USERADMIN'

  1. 注释接受邀请并设置域对象权限以允许访问的服务方法

@PreAuthorize(['ROLE_USER', 'ROLE_RUN_AS_USERADMIN']) //run as ROLE_USER and ROLE_RUN_AS_INVITED_USER

但是当将访问控制条目添加到域对象的 acl 时,我仍然会收到错误消息:

无法为传递的权限和 SID 找到匹配的 ACE

0 投票
1 回答
937 浏览

grails - spring security acl 不比较按位权限

我们在 Spring Security 中遇到了意外缺少按位权限检查的问题。我们想确认这是否是预期的行为,如果是,历史是什么和/或这样做的理由。

我们正在使用 grails 插件 spring-security-acl-1.1.1,它使用 spring-security-acl 3.0.7.RELEASE。

我们正在尝试的一个提炼场景涉及一个具有 ACL 的对象,这样 aclUtilService.readAcl(obj) 返回授予角色:

随后,我们希望检查单个权限,如 WRITE 并让它返回 true。但是,这似乎不受支持。例如,对于具有上述对象上定义的所有角色的用户,执行:

返回输出:

而我们希望所有这些都返回 true。查看源代码后,我们可以看到最终在 AclImpl 中检查了权限,其中包含以下行

这解释了为什么只有确切的掩码匹配。

仅更改这一行有点涉及,我们发现在 spring-security-acl 3.1 中,此代码被重构以允许定义权限授予策略 - https://jira.spring.io/browse/SEC-1166

然而,默认的授权策略仍然只检查确切的掩码。所以:

  • 为什么默认授予策略不检查按位掩码?如果不应该检查 CumulativePermission 有什么意义?
  • 处理按位权限的首选方法是什么,我们是否错误地配置了权限,或者我们应该只寻求实现按位权限检查(在这种情况下,首选的方法是什么)。

感谢您的任何解释或指导。

0 投票
1 回答
369 浏览

spring - Grails 2.4.3 升级 - Spring Security ACl - SpelExpressionParser

运行应用程序时出现以下错误,编译期间没有问题。请帮助,如何解决这个问题。

0 投票
1 回答
8044 浏览

spring-data-jpa - 将 Spring Security ACL 与 Spring Data REST 一起使用

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

同样在同一个项目中,我有一个具有 ACL 机制的服务层,它正在工作。

我无法将 PostFilter 表达式与 Spring Data REST 一起使用,即:

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

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

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

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

0 投票
1 回答
14136 浏览

spring - 我应该什么时候在我的应用程序中实现 Spring Security ACL?

Spring Security ACL 看起来非常强大,并且当你可以坚持他们的数据库实现时,它很容易实现。但是,当您必须实现自己的Acl并且AclService(例如,参见这个(旧的)非常基本的教程,只有约 26 页)时,它似乎变得更加复杂,并且似乎很难找到它的参考和示例(该教程来自 2008 )。

例如,在我们的应用程序中,用户具有角色并属于部门。大多数时候,他们被允许根据他们的角色对属于他们部门的对象执行一些操作。在所有情况下,部门 + 角色足以决定是否应授予用户对特定对象的特定操作。

用户、角色和部门由外部应用程序管理,当用户连接时我们会从该应用程序中检索它们(我们使用的是 REST 服务,但它也可以是 LDAP 服务器)。

我们想依靠@PreAuthorize('hasPermission(…)')实现域对象安全。因此有两种解决方案:

  1. 实现一个执行PermissionEvaluator整个检查的自定义;或者
  2. 使用自定义实现 ACL,该自定义AclService构建 ACL 正常工作所需的对象结构。

似乎实现整体AclService会比实现 a 更困难和更复杂PermissionEvaluator,但 ACL 似乎更标准。

您应该根据哪些标准实施其中一个?