我们正在使用在RHEL linux上运行的MobileFirst服务器MobileFirst 6.3。我们连接到SAP并使用Discovery生成适配器代码并使用那些生成的适配器调用,但自定义身份验证除外。如果我们对SAP进行创建,则会产生http POST请求,但适配器始终在该实际请求之前生成一个http HEAD请求。我有SAP后端的人抱怨这些(不是我个人认为他们会造成很大的伤害)。我在使用wireshark检查其他东西时也证实了这些。我可以想象它们会与适配器进行某种类型的连接检查有关,但是无法找到任何证据。搜索类似的问题也很有挑战性,因为HTTP和HEAD字符串在网址和HTML代码中非常常见。
适配器定义:
..
<connectivity>
<connectionPolicy xsi:type="nwgateway:NWGatewayHTTPConnectionPolicyType">
<protocol>HTTP</protocol>
<domain>our.complex.host</domain>
<port>10084</port>
<connectionTimeoutInMilliseconds>30000</connectionTimeoutInMilliseconds>
<socketTimeoutInMilliseconds>30000</socketTimeoutInMilliseconds>
<serviceRootUrl>/sap/opu/odata/sap/OUR_CUSTOM_REQS/</serviceRootUrl>
<!-- Following properties used by adapter's key manager for choosing specific certificate from key store
<sslCertificateAlias></sslCertificateAlias>
<sslCertificatePassword></sslCertificatePassword>-->
<maxConcurrentConnectionsPerNode>50</maxConcurrentConnectionsPerNode>
</connectionPolicy>
</connectivity>
..
<procedure name="createOurCustomObjectHeader" securityTest="OurCustomSecurityTest" connectAs="endUser"/>
..
适配器代码:
function createOurCustomObjectHeader(content) {
var request = {
CollectionName: "OurCustomObjectHeaderSet",
Content : content
};
return WL.Server.createNWBusinessObject(request);
}
安全测试代码:
<customSecurityTest name="OurCustomSecurityTest">
<test realm="wl_antiXSRFRealm" />
<!-- test realm="wl_authenticityRealm"/ -->
<test realm="wl_remoteDisableRealm" />
<test realm="OurCustomRealm" isInternalUserID="true" />
<test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID ="true" />
</customSecurityTest>
答案 0 :(得分:1)
在查看代码之后,我们似乎使用HEAD请求从网关获取CSRF令牌,然后我们将该令牌插入到实际创建请求的标头中。如果您引用SAP's documentation,则出于安全考虑,所有修改操作都需要CSRF令牌标头。
在6.3甚至更高版本的MobileFirst中,由于SAP Gateway基础设施的规定,我担心这种配置无法解决。