有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用Spring安全性时,条件特权实现会是什么样子?

我所说的“有条件”特权的意思是,例如:假设我们有事件e。创建事件e的用户应该能够删除事件e并邀请其他用户访问事件e,但仅限于该用户

从我看到的教程中,权限和角色似乎是静态的,例如: 医生有一个角色医生,拥有x、y和z权限,但仅此而已。。。非常静态

有没有一种简单的方法可以使用Spring Security有条件地管理权限

或者这是更适合前端的产品吗?例如,仅当特定事件的资源数据确认事件创建者的ID实际上与当前登录用户的会话内存/密钥链/任何类型中存储的ID相同时,视图才会显示“删除事件”按钮

谢谢


共 (1) 个答案

  1. # 1 楼答案

    首先,

    Or would this be something better suited for the front-end? ...show a 'delete event' button only if...

    不,不是作为可靠的防线,不

    这可能取决于技术堆栈、架构等,但根据经验,你不应该这样做。我没有编写servlets/jsp,但我在富客户机(swing)应用程序中使用了spring安全性,尽管我们拥有所有的控制权(我的意思是,我们可以保证用户除了单击按钮之外无法访问某些功能),但我们保护了模型,而不是gui

    无论如何调用Entity#delete,您都不能调用它-通过按钮单击事件或在测试中直接调用它。在web应用程序中,假设您不显示按钮,但攻击者知道该按钮指向example.com/entity?action=deleteURL或类似的内容,即使您不呈现按钮,他也可以直接访问该按钮

    关于主要问题,spring安全性大致分为两部分:RBAC和ACL。您需要的似乎是ACL部分。阅读一些关于domain security的howto和文章,这是一个相当复杂的东西,但它肯定能满足您的需要(当然需要一些努力)。您在第一段中描述的内容可能很容易实现,因为每个对象都有其所有者,并且可以被利用

    此外,here's a good advice

    编辑:只是为了给未来的访客澄清一下。要点是:前端应该有一些逻辑,但它不能是唯一的安全逻辑。当然,没有必要在UI中添加导致无法访问的功能的按钮