当前位置: 首页 > 知识库问答 >
问题:

Spring Security 4 ACL为用户和角色分配权限

武卓
2023-03-14

我不是Spring4的新手,但我是SpringSecurity4ACL的新手。我刚刚在我的MVC Web应用程序上实现了Spring Security4,这些应用程序都是后端Web服务。这里贴出了我所做的事情的链接:

http://stackoverflow.com/questions/33787085/spring-security-4-with-third-party-authentication-token

这为我的URL增加了安全性,只有具有特定角色的用户才能请求URL。这太棒了!我们以SiteMinder为例,不是传回一个用户名,而是在请求头中传回一个令牌。我们调用OpenAM,传入这个令牌,然后返回一个用户名。我们使用Hibernate身份验证从我们的数据库中获取用户信息,我们获取该用户的角色,从而为我们生成UserDetails,这样,我们就为这个经过身份验证的用户提供了一个SecurityContext。

但现在我在同一个MVC Web应用程序中面临一个新的挑战,那就是我想为我的对象添加ACL安全性。我已经做了大量的研究,还有更多的研究,我有几个问题。

我似乎可以对ACL表应用安全性(创建和/或检索和/或删除和/或更新和/或等)。我想知道是否可以这样应用安全性:

userA    SomeCarObject     has permissions (create,read,update)
userB    SomeCarObject     has permissions (read)
roleA    SomeCarObject     has permissions (update)
roleB    SomeCarObject     has permissions (delete)

那么,用户和角色是否都可以对对象拥有不同的权限呢?

我们有三种不同的对象类型:Cars、Animals和Flowers,我们希望使用ACL为每个对象类型分配用户和角色的不同权限。

因此,我正在研究如何在ACL中定义这些权限。

随着我得到更多的信息,我一定会在这里发布。谢谢!

共有1个答案

公良光熙
2023-03-14

那么,用户和角色是否都可以对对象拥有不同的权限呢?

是的,在Spring Security中有一个东西叫做SID-Security identity,它可以是一个权威(角色)或一个主体(用户)。

假设您使用的数据库模式与参考文档中的数据库模式类似,则acl_sid表应如下所示:

 +----+-----------+-------+
 | id | principal | sid   |
 +----+-----------+-------+
 |  1 | true      | userA |
 |  2 | true      | userB |
 |  3 | false     | roleB |
 |  4 | false     | roleB |
 +----+-----------+-------+

这就引出了一个问题...如果用户更改了一个角色,那么我们将不得不重新评估他们的权限,并且我们可能不得不从ACL表中添加或删除记录?

这不应该是必要的,但要注意缓存。如果在ACL表中添加/删除记录,请记住清除aclcache(如果您使用aclcache)。

我还在研究权限是如何工作的。

 类似资料:
  • 我目前的理解是Spring没有区分角色和权威,唯一的区别是角色名称的缩写。 我希望实现的是具有权威的角色。另外,如果我给一个用户ADMIN这个角色,他就会获得所有相关的特权(举个例子,我们可以访问网站上的路由以更新页面) 我当前的实现如下:我有一个自定义特权类,它与Roles类有多对多的关系,而Roles类与用户的类有多对多的关系。当,它迭代所有权限并获取。 我的问题是:有没有更好的方法(最好是s

  • 有些企业会对向用户发送的营销内容进行严格的管理——基层的运营或营销经理拟定的活动必须经过上级管理者的审批,方可生效执行。为此,诸葛的智能触达中提供了基于用户角色的触达活动权限管理,以支撑上述的企业需求。 如果您的团队需要使用权限控制,可通过以下步骤开启使用: 开启权限控制:智能触达的权限控制默认是关闭的,需要开启后方能使用; 分配用户角色:为团队成员分别分配设定「管理员」和「运营人员」角色; 开始

  • 6.0 版本开始,管理员可以在用户管理界面为一个用户赋予一个角色,不同角色可以配置不同权限,目前支持 10 种权限。 6.1 版本开始,我们添加了一个新的权限 relo_quota(角色配额),该权限用来给某个用户的角色设置空间配额。例如,我们可以通过添加 'role_quota': '100g' 为 employee 角色设置100GB的空间配额,同时其他用户还是使用默认的空间配额。 Seafi

  • 我有一个springmvc和springsecurity项目。 角色: 权限: 以及在角色和权限之间: 接下来的情况是: 我有一个控制器,我想用注释保护操作 大概是这样的: 但是注释不起作用,但是如果我把代码改成这样就可以了: 有人能给我一个提示吗?我不想用权限限制操作,我更喜欢角色限制。 提前谢谢。

  • 角色是分配给用户的权限集合。默认情况下,Navicat Monitor 包含三个预定义的角色供你分配给不同用户以限制其访问权限。它还允许你创建具自定义权限设置的新角色。苃要配置角色及其权限,请前往“配置”->“角色和权限”。 每个预定义的角色都有不同的权限: 角色 权限 管理员 可以完全控制访问所有页面。此角色的权限是不可编辑的。 DBA 可以访问所有页面,但以下功能“除外”: - 激活令牌密钥,