1

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

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

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

这是我的工作 Cast Iron URL(具体匿名,全部在一行上): https://eval-provide.castiron.com/envq/Development/getProducer?ciUser=admin@mydomain.com&ciPassword=My@ss4d!

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

var input = {
        method  : 'get',
        appName : 'producers'
        requestType: 'https',
        path: '/envq/Development/getProducer',
        parameters: {
            ciUser:     'admin@mydomain.com',
            ciPassword: 'My@ss4d!'
        },
        returnedContentType : 'xml'     
};
return WL.Server.invokeCastIron(input);
}

appName 和 requestType 似乎被忽略了。我和他们一起尝试过,没有他们。

我也尝试过不使用参数并将路径硬编码到我在 URL 中使用的完整字符串的路径,即(当然都在一行上):

path : '/envq/Development/getProducer? 
        ciUser=admin@mydomain.com&ciPassword=My@ss4d!',

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

4

1 回答 1

2

如果您的 Cast Iron 实例受基本身份验证保护,您需要以 bas64 格式传递用户名和密码,如下所示:

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

    };
    return WL.Server.invokeCastIron(input);
于 2013-03-28T03:12:39.190 回答