MobileFirst SAP Adapter http HEAD请求

时间:2015-08-13 09:48:53

标签: sap ibm-mobilefirst mobilefirst-adapters

我们正在使用在RHEL linux上运行的MobileFirst服务器MobileFirst 6.3。我们连接到SAP并使用Discovery生成适配器代码并使用那些生成的适配器调用,但自定义身份验证除外。如果我们对SAP进行创建,则会产生http POST请求,但适配器始终在该实际请求之前生成一个http HEAD请求。我有SAP后端的人抱怨这些(不是我个人认为他们会造成很大的伤害)。我在使用wireshark检查其他东西时也证实了这些。我可以想象它们会与适配器进行某种类型的连接检查有关,但是无法找到任何证据。搜索类似的问题也很有挑战性,因为HTTP和HEAD字符串在网址和HTML代码中非常常见。

  • 任何人都可以验证我对这些HEAD请求目的的猜测吗?
  • 有关于这些的文件吗?
  • 它们是否具有任何可配置性(在这种情况下,选择退出的缺点是什么)?

适配器定义:

..
    <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>

1 个答案:

答案 0 :(得分:1)

在查看代码之后,我们似乎使用HEAD请求从网关获取CSRF令牌,然后我们将该令牌插入到实际创建请求的标头中。如果您引用SAP's documentation,则出于安全考虑,所有修改操作都需要CSRF令牌标头。

在6.3甚至更高版本的MobileFirst中,由于SAP Gateway基础设施的规定,我担心这种配置无法解决。