IBM Worklight 7.1:从混合应用程序调用安全的Worklight适配器过程时的授权错误

时间:2017-04-29 16:52:30

标签: ibm-mobilefirst

我正在尝试执行给定here的示例应用程序,但面临问题。当我点击" Get Secret"数据按钮,请求到达适配器,但我得到一个失败的响应如下。

04-29 22:12:22.464: I/chromium(2802): [INFO:CONSOLE(34)] "=======getSecretData_CallbackFail========={"responseHeaders":{"X-Powered-By":"Servlet/3.0","Content-Type":"text/plain; charset=UTF-8","Content-Length":"21","Date":"Sat, 29 Apr 2017 16:41:31 GMT","WWW-Authenticate":"Bearer realm=\"imfAuthentication\", scope=\"AuthRealm\""},"status":401,"responseText":"missing_authorization","errorMsg":"Unauthorized","invocationContext":null}", source: file:///android_asset/www/default/js/main.js (34)

我正在使用Android手机测试应用程序。有人可以建议我做错了吗?

function getSecretData(){
    var resourceRequest = new WLResourceRequest("/adapters/AuthenticationService/getSecretData", WLResourceRequest.GET, 30000);
    resourceRequest.send().then(
        getSecretData_CallbackOK,
        getSecretData_CallbackFail
    );
}

上述代码在客户端用于调用适配器。调用onAuthRequired函数,但errormessage未定义。

function onAuthRequired(headers, errorMessage){
    WL.Logger.info("Authservice onAuthRequired--->"+errorMessage);
    errorMessage = errorMessage ? errorMessage : null;
    return {
        authRequired: true,
        errorMessage: errorMessage
    };
}

1 个答案:

答案 0 :(得分:0)

您的适配器的机密数据受域AuthRealm保护,每当客户端向受保护的适配器端点发出请求时,它都会引发401未经授权的错误。基本上401是服务器抛出的挑战。

检查您是否已在this教程中的客户端代码中使用AuthRealm域声明了已注册的质询处理程序。一旦客户端在挑战处理程序的帮助下成功应答服务器挑战,服务器将返回秘密数据。