云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

腾讯云_全职高手小说百度云资源_代金券

小七 141 0

最近,我正在与中国的一个当地合作伙伴合作一个共同创新项目。他们将提供一套由硬件和软件组成的人脸识别解决方案。一旦一个人被识别,合作伙伴软件将使用SAP S/4HANA contact creation API在系统中创建一个contact实例

由于我们需要在上海的SAP Cloud Forum网站上进行演示,并且假设会有很多客人想要尝试这个解决方案,这导致多个联系人创建请求可能会同时发送到S/4HANA系统。因此,作为演示准备步骤之一,我想使用jMeter生成大量并发的联系人创建请求,并测量其性能。

由于在Postman中实现联系人创建API不是什么大事,同样的想法也将应用于jMeter:在一个简单的控制器中包装两个HTTP请求,大数据是啥,一个请求负责获取XSRF令牌,另一个请求负责真正的创建调用。一旦执行了jMeter项目,第一次调用如我所料成功–成功检索令牌,并在HTTP响应头字段"x-csrf-token"中可用。

不幸的是,云服务器试用,第二次HTTP请求失败,错误消息为"csrf token validation failed"。

这个错误让我很困惑,因为我已经从服务器上获得了正确的令牌,为什么验证仍然失败?我在谷歌搜索了一下,从SAP网站上找到了这个图表:https://cloudplatform.sap.com/scenarios/usecases/authentication.html

展示服务消费场景中客户端、服务提供者、标识提供者之间的编排。虽然在图中是SAP云平台扮演服务提供商的角色,而不是S/4HANA,但是逻辑是完全一样的

这张图给了我一个提示,所以我打开Chrome开发工具,在访问S/4HANA Fiori Launchpad时检查了网络往返,很快我意识到它正是按照中描述的六个步骤进行的上面的架构图。

第1步:我尝试使用Chrome访问S/4HANA Fiori启动板–访问请求作为服务提供商发送给S/4HANA。

第2步:S/4HANA使用HTTP 302重定向将此请求重定向到IDP。在我的例子中,S/4HANA和SAP ID服务之间预先配置了一个互信(即,账号:account.sap.com).

第三步:IDP(账号:account.sap.com)负责实际的用户身份验证,并返回一个HTMP页面,其中包含一个表单,供用户使用其用户和密码进行身份验证。

引擎盖下的信息确实多得多而不是页面中可见的两个输入字段。这些隐藏字段可以通过查看SAP ID service返回的HTML表单源代码在Chrome开发工具中找到,

它们是:

xsrfProtectionspId公司spName公司道具idpSSOEndpoint

全部由服务器端的SAP ID服务生成。

第四步:用户输入自己的用户和密码,点击登录按钮后,凭证将与第三步引入的隐藏字段一起发送回IDP。所有这些字段都会涉及服务器端的IDP认证,可以在Chrome网络页签中看到,

第五步:IDP完成认证,并在HTTP响应头字段"SAMLResponse"中发回断言,

由于这是基于SAML2.0协议的,所以我们可以通过BASE64解码得到它的XML源。下面是我在浏览器中打开的SAML断言:

通过此断言,最终用户现在可以访问S/4HANA中的资源,云服务器买,作为数字中的最后一步。

考虑到以上所有知识,我很快找到了解决令牌验证失败的方法。可以从我的github中找到完整的jMeter项目文件(.jmx):https://github.com/i042416/KnowlegeRepository/blob/master/ABAP/C4COData/jMeter/01-contact-creation.jmx

这次jMeter项目的建设完全遵循了六个步骤:

与我原来的jMeter项目相比,增加了两个步骤,上面用红色突出显示。

1。创建五个独立的正则表达式提取器,从HTTP响应表单体的隐藏字段中解析IDP服务器身份验证所需的五个参数:

现在这五个字段存储为jMeter变量,可供后续HTTP请求使用。

2。使用五个隐藏字段加用户名和密码向SAP ID服务提交身份验证请求。

登录成功后,相应设置cookie。

3。现在是获取CSRF令牌的时候了。要点是:对于后续的创建API调用,仅将本步骤获取的CSRF令牌提交给S/4HANA是不够的,这将导致本部分开头介绍的CSRF令牌验证失败。相反,云服务器买,下面突出显示的两个cookie也必须包含在HTTP请求中。

这就是我将这两个cookie存储为jMeter变量的原因。

4。在最后一步,正如我刚才强调的,将从CSRF token fetch步骤得到的两个cookie传递到服务器:

这次没有CSRF token验证失败-成功创建了联系人:

最后我可以使用这个jMeter项目发出一些并行的联系人创建请求。下面的测试结果显示,在S/4HANA中创建一个联系人大约需要1秒。

在S/4HANA中创建的联系人数据–我硬编码名字为"Jerry"和姓"Wang",并使用jMeter随机生成器确保创建的联系人看起来不那么无聊