如何使用 http 适配器使用来自 IBM MobileFirst 的安全 API

Posted

技术标签:

【中文标题】如何使用 http 适配器使用来自 IBM MobileFirst 的安全 API【英文标题】:How to consume secured API from IBM MobileFirst using http adapters 【发布时间】:2015-06-12 12:04:56 【问题描述】:

我正在尝试调用具有身份验证的 API。我收到类似“Http request failed: java.net.SocketTimeoutException:Read timed out”之类的错误。

一般当我在浏览器上运行这个 url(http://samirkantalenka-test.apigee.net/zsubmitalv-3) 时,它会询问用户名和密码。如果我输入这些凭据,那么它会返回 json 数据。

如何在 Mobilefirst Http 适配器中提供这些凭据?谁能帮帮我。

适配器.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <!--
Licensed Materials - Property of IBM
5725-I43 (C) Copyright IBM Corp. 2011, 2013. All Rights Reserved.
US Government Users Restricted Rights - Use, duplication or
disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 -->
<wl:adapter name="Apigee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:wl="http://www.ibm.com/mfp/integration"
xmlns:http="http://www.ibm.com/mfp/integration/http">

<displayName>Apigee</displayName>
<description>Apigee</description>
<connectivity>
    <connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
        <protocol>http</protocol>
        <domain>samirkantalenka-test.apigee.net</domain>
        <authentication>
            <basic/>
            <serverIdentity>
                <username>myusername</username>
                <password>mypassword</password>
            </serverIdentity>

        </authentication> 
        <loadConstraints maxConcurrentConnectionsPerNode="2" />
    <connectionTimeoutInMilliseconds>30000</connectionTimeoutInMilliseconds>
        <socketTimeoutInMilliseconds>30000</socketTimeoutInMilliseconds>
       <maxConcurrentConnectionsPerNode>50</maxConcurrentConnectionsPerNode>       
   <!-- Following properties used by adapter's key manager for choosing specific certificate from key store  
        <sslCertificateAlias></sslCertificateAlias> 
        <sslCertificatePassword></sslCertificatePassword>
        -->     

    </connectionPolicy>
</connectivity>

<procedure name="getStories" connectAs="server"/>



    </wl:adapter>

在这里,我收到类似“cvc-complex-type.2.4.a: Invalid content was found started with element 'loadConstraints'。'proxy, sslCertificateAlias、sslCertificatePassword、maxConcurrentConnectionsPerNode' 是预期的。"

【问题讨论】:

【参考方案1】:

看起来那个端点是 SAP Netweaver 之一? 在这种情况下,只需创建专用的 SAP Netweaver Gateway 适配器类型:

然后您可以在适配器 XML 文件中指定用户名和密码。 可能对你有用。

在此处查看用户文档:http://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/com.ibm.worklight.dev.doc/devref/c_sap_adapters.html

【讨论】:

是的,终点是 SAP,但在中间“APIGEE”是他们的,它正在提供一些身份验证。 我仍然坚持要走的路。另请参阅:***.com/questions/16921978/… 我编辑了添加 xml 文件的问题。我收到错误 因为你放错了connectionTimeoutInMilliseconds和socketTimeoutInMilliseconds。将这两个元素放在域元素下方。顺便说一句,您为什么要删除端口元素?不要更改 XML 结构。 好的,我将这些元素保留在域元素之下。我的 API 没有端口号,所以我删除了它,现在我的 xml 中没有显示任何错误,但我得到的响应类似于“”prolog 中不允许内容。”、“无法从后端解析有效负载(过程: HttpRequest)""

以上是关于如何使用 http 适配器使用来自 IBM MobileFirst 的安全 API的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 过滤器 HTTP 适配器响应

IBM Worklight 6.0 - 适配器身份验证失败:“服务器无法处理来自应用程序的请求”

用于真实设备的 IBM Worklight SQL 适配器

使用安全测试的 IBM Worklight 适配器

在 IBM Worklight 中使用适配器调用服务调用安全适配器

IBM MobileFirst Adapter 如何与 Angular JS 集成?