在Web应用程序中实现RBAC的层?

时间:2014-12-18 02:24:47

标签: authorization access-control rbac abac

我有一个包含EJB的企业应用程序,并且还有一些REST apis。我也有一些其他服务消耗我的bean e:g ui服务。我的EJB使用基于角色的注释i:e RolesAllowedDeclareRoles进行注释。我的应用程序中也有一些REST API,我需要对少数资源进行访问控制,并使其他API具有不受限制的访问权限。

在这种情况下应该实施RBAC吗?在bean级别或REST API级别?

1 个答案:

答案 0 :(得分:2)

以下是回复的一些要素:

  1. 首先尝试以可配置的解耦方式定义访问控制层。使用等框架是一个很好的前进方式。这称为外部授权
  2. 其次,想想最重要的事情:它是通过REST公开的功能吗?是豆子吗?是数据吗?您通常希望尽可能地保护对您最重要的事情。
  3. 第三,同时在两个地方保护是否有意义?很多时候,它会。例如,您希望保护您的数据(例如敏感的银行数据)。同时,您希望控制对流程的访问(即通过API公开的功能,无论是REST还是其他)。
  4. 最重要的是,您最重要的是将自动化逻辑集中到一个存储库中:这可以是一组角色和权限(在中定义)或一组策略(在{{中定义) 3}})。然后,您在API层和/或EJB层中执行的操作将调用该集中位置以检查授权。

    查看此图表(源自。它表明,只要您呼叫外部决策点或持续管理,您就可以在您认为必要的任何地方应用授权检查您在不同系统中的角色:

    enter image description here