每个用户拥有一个或多个角色,每个角色拥有一个或多个权限。到目前为止,我可以通过角色收集与用户关联的所有权限。
某些权限有一些限制。例如:
用户可以编辑属于其网站的所有帖子,但不能编辑其他帖子。
因此“编辑帖子”权限应该有这个约束。
关于模型:如果约束与权限相关,我无法解析哪些约束对特定用户有效。
用户模型可以具有“站点”之类的属性,但并非属于一个站点的所有用户都应具有上述约束。他们中的一些人应该能够编辑所有帖子。
确定哪个约束对于特定用户处于活动状态的最佳方法是什么。我是否必须将其拆分为单独的权限并将约束集成到权限模型中,或者是否有更好的解决方案?我偶然发现了基于属性的访问控制,但我不确定是否应该切换到完全不同的应用程序
任何帮助表示赞赏:)
我之前回答过类似的问题
您希望使用与其保护的应用程序类型“不可知”的解决方案。这就是 XACML(可扩展访问控制标记语言)的目标。 XACML 提供基于属性、基于策略的访问控制(ABAC 和 PBAC)。这使您能够编写极具表现力的授权策略并在单个存储库中集中管理它们。然后,中央授权引擎(称为策略决策点或 PDP)将为您的不同应用程序提供决策。
您需要的最小属性集通常是有关用户(主题)、资源和操作的属性。 XACML 还允许您添加环境属性。这意味着您可以编写以下类型的策略:
医生可以查看他们所分配的患者的医疗记录。
HTH