繁体   English   中英

使用Spring Security,条件特权实现会是什么样?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM