SAP Data Hub的CSRF验证错误

2020-09-04 18:34发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在尝试从Data Hub图形...

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

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


我正在尝试从Data Hub图形向ABAP系统上的服务进行REST POST调用。 自然,它涉及CSRF。

当我从Java/Python等编程语言使用该服务时,我曾经进行过两次调用(每个调用都具有基本授权方案):1.使用x-csrf-token = fetch标头进行GET,2.使用额外的POST 标头x-csrf-token = [步骤1中的值]。 而且有效。

现在,在Data Hub方面我很挣扎,我尝试了几种不同的设计:

1。 打开API客户端运算符,在其中将useCsrfToken配置设置设置为true。 出现CSRF验证错误。

文档说,"如果设置为true,则客户端会在第一个请求时自动检索csrf令牌,并将其用于后续请求中",但没有说明如何发出后续请求。

2。 使用Open API Client运算符进行两次链接调用。 在第一个中,我设置了includeResponseHeaders = x-csrf-token,在第二个中,我设置了useCsrfToken为true。 仍然出现CSRF验证错误。

3。 在上述两个调用之间添加一个JS Message运算符,我在其中添加了以下内容:

msg.Attributes ['openapi.header_params.x-csrf-token'] = inattributes ['openapi.header.x-csrf-token'];

在这里,我尝试将标头参数x-csrf-token添加到从第一次调用中收到的值。 同样的错误。

3。 在JS Message运算符之后使用HTTP Client运算符,在这里我将在JS Message中设置所有必需的标头(除了Authorization),然后将Authorization保留给HTTP Client。 出现未经授权的错误。

4。 尝试使用btoa()函数对user:password令牌进行编码,并将其添加到HTTP标头JS Message运算符中。 显然,Data Hub的Javascript引擎不知道btoa()。

我会说,设计#1应该是可行的,而不需要其他所有设计。 我想念什么吗?

付费偷看设置
发送
2条回答
Climb_Ma
1楼-- · 2020-09-04 18:56

没有做完全相同的方案,但是非树液系统存在相同的问题。

解决方案是,我必须将cookie明确地放在另一个内存中,以便第二次调用可以将其添加为标头属性。

不知道它如何与API-Hub配合使用,但这也许会为您提供线索:

https://blogs.sap.com/2017/07/06/handling-csrf-tokens-in-sap-cloud-platform-integration /

木偶小白
2楼-- · 2020-09-04 18:49

感谢弗洛里安,是的,这通常是 我使用Python/Java/Scala方法所做的事情,但是在那种情况下,我可以很好地控制我请求,接收和添加到HTTP请求中的cookie和标头。 我的问题特别是关于如何使用Data Hub标准运算符,因为它似乎控制较少。

一周热门 更多>