用一个共同的XSUAA实例保护多个集成SAP CAP java应用程序的方法

198 阅读2分钟

我是SAP印度实验室的一名开发人员。我试图用一个单一的SAP授权和信任管理服务(XSUAA)实例来保证一组SAP云应用编程模型(CAP)java应用程序的安全,这些应用程序是相互集成的,用于认证和授权,其中每个应用程序都有自己的一组角色用于授权。

我在下面解释了我所遵循的方法,因为我在任何资源中都找不到这种方法。

让我举个例子,并解释一下在这种情况下的步骤。

假设我们有两个应用程序,一个用于维护雇员的详细资料(称为EMP应用程序),另一个用于维护部门的详细资料(称为DEP应用程序)。EMP应用程序的角色 "emp_admin "对EMP应用程序有编辑权限,角色 "emp_user "对EMP应用程序只有读取权限。

同样,'dep_admin'对DEP应用有编辑/写入的权限,而'dep_user'对DEP应用有读取的权限。

现在,EMP应用程序依赖于在DEP应用程序中维护的部门细节(即,当你在EMP应用程序中维护雇员的细节时,假设有一个下拉菜单来选择该雇员所属的部门。这个信息来自于DEP服务)。

现在我们将用一个共同的XSUAA实例来保护EMP和DEP应用程序,并允许EMP应用程序以安全的方式从DEP服务中获取部门信息。

1.我们像往常一样在mta.yaml文件中定义XSUAA实例,并将其与我们的应用程序(服务和AppRouter模块)绑定。

mta.yaml

2.定义XSUAA实例的配置,如下所示。

xs-security.json

3.EMP应用程序依赖于DEP应用程序的远程服务来获取部门的详细信息。对远程服务的调用需要将访问令牌从EMP转发到DEP,并在'application.yaml'文件中保持如下所示。

application.yaml

4.假设EMP和DEP应用程序有自己的部署配置文件,我们应该保持与XSUAA有关的完全相同的内容(在mta.yaml和xs-security.json文件中),如上述步骤1和2所示,用于两个应用程序。

请注意,我只想强调如何在不同的应用程序中拥有一个共同的XSUAA实例,以及如何促进它们之间的令牌转发。

我希望这些内容能帮助那些试图实现类似方案的人。如果有任何其他方法可以实现这种行为,请发表评论,这将使我们所有人受益。