0

我有一个由 EJB 组成的企业应用程序,并且还有一些 REST api。此外,我还有一些其他服务会消耗我的 bean,例如:g ui services。我的 EJB 使用基于角色的注释进行注释,即:e RolesAllowed、. DeclareRoles我的应用程序中也有一些 REST API,我需要对少数资源进行访问控制,并有一些其他 API 具有不受限制的访问权限。

在这种情况下,应该在哪里实施 RBAC?在 bean 级别还是在 REST API 级别?

4

1 回答 1

3

以下是一些响应要素:

  1. 首先尝试以可配置的、解耦的方式定义您的访问控制层。使用诸如之类的框架是一个很好的前进方向。这称为外部授权
  2. 其次,想想对你来说最重要的事情:它是通过 REST 公开的功能吗?是豆子吗?是数据吗?您通常希望尽可能地保护对您来说最重要的东西。
  3. 第三,两地同时保护有意义吗?很多时候,它会的。例如,您想保护您的数据(例如敏感的银行数据)。同时,您希望控制对流程的访问(即通过您的 API 公开的功能,无论是 REST 还是其他)。

最终,最重要的是将您的自动化逻辑集中到一个存储库中:这可能是一组角色和权限(如中定义)或一组策略(如中定义)。然后,您在 API 层和/或 EJB 层中所做的就是调用该集中位置以检查授权。

看一下这张图(源于。它表明只要您调用外部决策点或只要您在不同系统中始终管理您的角色,您就可以在您认为必要的任何地方应用您的授权检查:

在此处输入图像描述

于 2014-12-21T11:42:06.300 回答