[英]What would a conditional privilege implementation look like using Spring Security?
我所说的“有条件”特权是,例如:说我们有事件e。 创建事件e的用户应该能够删除事件e并邀请其他用户参加事件e,但只能是该用户。
从我所看到的教程中,权限和角色似乎是静态的,例如:Doctor具有一个角色Doctor,具有权限x,y和z,但这是...相当静态的。
有没有一种简单的方法可以通过Spring Security有条件地管理权限?
还是这更适合前端? 例如,仅当特定事件的资源数据确认事件创建者的ID实际上与存储在会话内存/钥匙串/当前登录用户中的ID相同时,视图才会显示“删除事件”按钮,请键入的东西。
谢谢
首先,
还是这更适合前端? 仅在以下情况下显示“删除事件”按钮:
没有。 不能作为可靠的防线,不。
好吧,这可能取决于技术堆栈,体系结构等,但是根据经验,您不应该这样做。 我没有编写servlets / jsp,但是我在富客户端(swing)应用程序中使用了spring security,即使我们拥有所有控件(我的意思是,我们可以保证用户只能单击按钮才能访问某些功能。 ),我们保护了我们的模型 ,而不是gui。
无论如何调用,您都不应该调用Entity#delete
通过按钮单击事件或在测试中直接调用它。 在Web应用程序中,假设您没有显示按钮,但是攻击者知道该按钮会导致example.com/entity?action=delete
URL或类似内容,即使您未渲染,他也可以直接访问它按钮。
关于主要问题,大致上讲,spring security有两个部分:RBAC和ACL。 您需要的似乎是ACL部分。 阅读一些有关域安全的方法和文章,这是一个非常复杂的内容,但是肯定可以满足您的需求(当然,要付出一些努力)。 您在第一段中描述的内容很容易实现,因为每个对象都有它的所有者并且可以被利用。
另外, 这是一个很好的建议 。
编辑:只是为将来的访问者清理东西。 重点是:前端应该有一些逻辑,但它绝不能是唯一的安全逻辑 。 当然,无需将UI混乱与导致无法访问的功能的按钮。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.