XSUAA的CAPM Protect CDS服务

2020-08-15 18:18发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,那里

在遵循教程 https://developers.sap.com/时 tutorials/xsa-cap-add-uaa.html 通过AppRouter调用时,srv-Module(srv_api)受保护。

但是据我所知,仍然可以直接调用srv-Module(而不是通过AppRouter),然后srv没有受到保护。

如果使用基于CAPM模板的CDS oData服务,则可以添加一些用于访问限制的注释,例如@(requires:'authenticated-user')->参见 /img/questions/784681/more -info-on-cds-requires-statement-cloud-applicat.html

但是,如果这样做,则无法直接或通过AppRouter调用srv-Module,将出现错误消息"禁止"。

因此,我想知道如何通过通过AppRouter调用或直接在srv-Instance上对其进行保护来保护oData srv-Module。

最诚挚的问候,

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,那里

在遵循教程 https://developers.sap.com/时 tutorials/xsa-cap-add-uaa.html 通过AppRouter调用时,srv-Module(srv_api)受保护。

但是据我所知,仍然可以直接调用srv-Module(而不是通过AppRouter),然后srv没有受到保护。

如果使用基于CAPM模板的CDS oData服务,则可以添加一些用于访问限制的注释,例如@(requires:'authenticated-user')->参见 /img/questions/784681/more -info-on-cds-requires-statement-cloud-applicat.html

但是,如果这样做,则无法直接或通过AppRouter调用srv-Module,将出现错误消息"禁止"。

因此,我想知道如何通过通过AppRouter调用或直接在srv-Instance上对其进行保护来保护oData srv-Module。

最诚挚的问候,

付费偷看设置
发送
9条回答
天桥码农
1楼-- · 2020-08-15 18:54

嗨,本

如果您使用的是Java风格的CAPM,请在博客文章 Ivan Mirisola 的cloud-platform-b​​usiness-application/">保护Cloud Platform业务应用程序 您。

最诚挚的问候
格雷戈尔

d56caomao
2楼-- · 2020-08-15 18:48

您好格雷戈·沃尔夫(Gregor Wolf) 克里斯蒂安·乔治(Georgi Georgi)

不幸的是,上述解决方案我发现了一个异常/奇怪的行为。

在将三个库添加到package.json之后,所有服务都受到保护! 甚至没有用@(requires)注释的服务。

意味着您收到所有服务的"禁止"或"未经授权"错误消息。

我仍然会对"正确"的解决方案感兴趣,该解决方案中的授权完全按照cds服务中的批注定义工作。

最诚挚的问候,

SKY徐
3楼-- · 2020-08-15 18:43

我知道了。 如果通过AppRouter调用该服务,则必须添加一个名为 x-approuter-authorization 的附加标头参数,并与参数 Authorization 填充相同的信息,这意味着: " bearer" + Token。

昵称总是被占用
4楼-- · 2020-08-15 18:38

以下注释也不起作用。.oData服务现在阻止所有请求。

 @((需要:" any")

看起来像个虫子吗?

天桥码农
5楼-- · 2020-08-15 18:37

嗨,本,

我已经回答了您有关此问题的BCP机票。

请注意,

基督徒

哎,真难
6楼-- · 2020-08-15 18:38

嗨,格雷戈·沃尔夫和< rel =" nofollow" hraf=" https://people.sap.com/christian.georgi">克里斯蒂安·乔治(Georgi Georgi)

对不起,SPAM,这是我保证今天的最后评论:-)

上述所有服务/实体现在都被身份验证阻止的问题可以在您的GITHUB存储库中重现 https: //github.com/gregorwolf/bookshop-nodejs

只需构建/启动db and srv服务,然后向admin和catalog服务发出一些GET请求。

您将遇到,所有请求都将失败,并显示"未经授权"错误消息。 查看日志:

应用程序正在启动
 应用程序正在运行
 > bookshop-nodejs-srv@1.0.0开始/home/vcap/app
 >节点./node_modules/@sap/cds/bin/cds.js服务gen/csn.json
 [cds]-连接到数据源-hana:gen/csn.json
 [cds]-在/admin上提供AdminService
 [cds]-在/catalog上提供CatalogService
 [cds]-从以下位置加载的服务定义:
 gen/csn.json
 [cds]-服务器侦听http://localhost:59318 ...(以^ C终止)
 [cds]-发射于:5390.165ms
 GET/管理员/作者
 {user:'10 .0.136.0',ip:'10 .0.136.0'}
 GET/目录/作者
 {user:'10 .0.136.0',ip:'10 .0.136.0'}
 GET/目录/书籍
 {user:'10 .0.136.0',ip:'10 .0.136.0'}
 GET/目录/货币
 {user:'10 .0.136.0',ip:'10 .0.136.0'}
 GET/目录/订单
 {user:'10 .0.136.0',ip:'10 .0.136.0'} 

根据服务定义,对目录服务实体" Books"和" Authors"的GET请求应无需身份验证即可工作。 在这里,我还为"作者"实体添加了注释" @requires:'any'",只是指出它不能正常工作。

使用my.bookshop作为来自'../db/data-model'的数据库;

 服务CatalogService {

   @readonly实体书籍作为db.Books上的投影(不包括{
     createdBy,modifiedBy
   };

   @requires:'任何'
   @readonly实体作者作为db.Authors上的投影(不包括{
     createdBy,modifiedBy
   };

   @requires:"已认证用户"
   @insertonly实体Orders作为db.Orders上的投影;
 } 

我希望这可以帮助您分析问题。

期待解决方案。

最诚挚的问候,

Ben

一周热门 更多>