HTTP-запросы HEAD адаптера MobileFirst SAP

Мы работаем с MobileFirst 6.3, сервером mobilefirst, работающим на RHEL linux. Мы подключаемся к SAP и используем Discovery для создания кода адаптера и используем эти сгенерированные вызовы адаптера, за исключением пользовательской аутентификации. Если мы создадим ссылку на SAP, это приведет к HTTP-запросу POST, но адаптер всегда генерирует один HTTP-запрос HEAD перед этим фактическим запросом. У меня были жалобы на это из серверной части SAP (не то чтобы я лично думал, что они причинят большой вред). Я также подтвердил это при проверке других вещей с помощью wireshark. Я могу предположить, что они связаны с какой-то проверкой подключения адаптерами, но не смог найти никаких доказательств этого. Поиск похожих вопросов также является сложной задачей, поскольку строки HTTP и HEAD часто встречаются в URL-адресах и 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>

person jarkko    schedule 13.08.2015    source источник
comment
Не понятно. Можете ли вы предоставить код реализации вашего адаптера?   -  person Idan Adar    schedule 21.08.2015
comment
Добавлены, надеюсь, соответствующие части кода.   -  person jarkko    schedule 24.08.2015


Ответы (1)


После просмотра кода оказалось, что мы используем запрос HEAD для извлечения CSRF-токена из шлюза, а затем вставляем этот токен в заголовок фактического запроса на создание. Если вы ссылаетесь на документацию SAP, все операции по изменению требуют заголовок токена CSRF в целях безопасности.

Боюсь, что в 6.3 или более поздних версиях MobileFirst нет возможности обойти эту конфигурацию из-за положений инфраструктуры шлюза SAP.

person Kyle Woodward    schedule 18.09.2015