Ibm mobilefirst IBM Worklight invokeCastIron can';t连接到铸铁活实例

Ibm mobilefirst IBM Worklight invokeCastIron can';t连接到铸铁活实例,ibm-mobilefirst,Ibm Mobilefirst,我有一个Cast Iron Live实例,用于对Salesforce.com进行简单查询。当我在浏览器中或通过curl输入URL时,我会得到预期的响应 当我尝试在IBM Worklight适配器中调用相同URL的等效项时,服务器不断返回401个未经授权的HTML响应 我已经查找了Worklight正在发送的实际请求的更详细的日志,但运气不好。我还安装了Wireshark并嗅探了我的连接,希望能看到URL或标题,但它们与有效负载一起被加密。我还查看了Worklight Server JavaScr

我有一个Cast Iron Live实例,用于对Salesforce.com进行简单查询。当我在浏览器中或通过curl输入URL时,我会得到预期的响应

当我尝试在IBM Worklight适配器中调用相同URL的等效项时,服务器不断返回401个未经授权的HTML响应

我已经查找了Worklight正在发送的实际请求的更详细的日志,但运气不好。我还安装了Wireshark并嗅探了我的连接,希望能看到URL或标题,但它们与有效负载一起被加密。我还查看了Worklight Server JavaScript源代码以寻找线索,但大部分实际工作都是在Java类文件中完成的

以下是我的工作铸铁URL(细节匿名,全部在一行上): ? ciUser=admin@mydomain.com&密码=My@ss4d!

这是我的适配器代码(再次匿名): 函数getProducers(){

appName和requestType似乎被忽略了。我试过使用它们,也试过不使用它们

我还尝试过不使用参数,并对URL中使用的完整字符串的路径进行硬编码,即(当然全部在一行上):


要让Cast Iron Live和Worklight进行身份验证,我需要做什么?

如果您的Cast Iron实例受basic auth保护,您需要以bas64格式传递用户名和密码,如下所示:

    var input = {
            method  : 'get',
            appName : 'myApp',
            headers: {Authorization: "Basic YWRtaW5Ad29ya2xpZ2h0LmlibTpjaGFuZ2VJdCE="},
            path : '/env/Development/'+orchestrationName,           
            returnedContentType : 'json'

    };
    return WL.Server.invokeCastIron(input);

这正是我所需要的!Cast Iron要求在标题中使用base64格式的basic auth。具体来说,Base 64字符串必须是用户名:密码格式。一旦我这样做并重建了适配器,它就可以工作了。非常感谢您的帮助!
path : '/envq/Development/getProducer? 
        ciUser=admin@mydomain.com&ciPassword=My@ss4d!',
    var input = {
            method  : 'get',
            appName : 'myApp',
            headers: {Authorization: "Basic YWRtaW5Ad29ya2xpZ2h0LmlibTpjaGFuZ2VJdCE="},
            path : '/env/Development/'+orchestrationName,           
            returnedContentType : 'json'

    };
    return WL.Server.invokeCastIron(input);