HTTP基本身份验证方法,通过Datapower验证移动客户端

时间:2017-04-28 17:57:47

标签: authentication ibm-mobilefirst ibm-datapower

我正在使用Mobilefirst Platform 8.0进行应用开发。

我们如何使用HTTP基本身份验证方法通过数据权限验证移动客户端。请用challnegHandler示例代码帮我解决。

我在challengeHandler中尝试了以下代码,但Datapower总是返回401。

var DataPowerChallengeHandler = function() {
   var dataPowerChallengeHandler = WL.Client.createGatewayChallengeHandler("LtpaBasedSSO");

   dataPowerChallengeHandler.canHandleResponse = function(response) {
    if (!response || response.responseText === null) {
        return false;
    }

    if (response.status=="401") {{
        return true;
    }

    return false;
};

dataPowerChallengeHandler.handleChallenge = function(response) {
    document.getElementById('result').style.display = 'none';
    document.getElementById('auth').style.display = 'block';
};

dataPowerChallengeHandler.submitLoginFormCallback = function(response) {
    var isLoginFormResponse = dataPowerChallengeHandler.canHandleResponse(response);
    if (isLoginFormResponse) {
        dataPowerChallengeHandler.handleChallenge(response);
    } else {
        document.getElementById('result').style.display = 'block';
        document.getElementById('auth').style.display = 'none';
        dataPowerChallengeHandler.submitSuccess();
    }
};

document.getElementById("AuthSubmitButton").addEventListener("click", function() {
    var username = document.getElementById('txtusername').value;
    var password = document.getElementById('txtpassword').value;
    var mystring = convertBase64(username+":"+password);
    var headerString = "Basic "+ mystring;
    WL.Client.addGlobalHeader("Authorization",headerString);
    dataPowerChallengeHandler.submitSuccess();
});

document.getElementById("logout").addEventListener("click", function() {

    WLAuthorizationManager.logout("LtpaBasedSSO").then(
        function() {
            WL.Logger.debug("logout onSuccess");
            alert("Success logout");
        },
        function(response) {
            WL.Logger.debug("logout onFailure: " + JSON.stringify(response));
        });
});

document.getElementById('AuthCancelButton').addEventListener("click",function(){
  document.getElementById('result').style.display = 'block';
  document.getElementById('auth').style.display = 'none';
  dataPowerChallengeHandler.cancel();
});

return dataPowerChallengeHandler;
 };

1 个答案:

答案 0 :(得分:1)

您的网关质询处理程序代码不正确并导致所有这些问题。

canHandleResponse方法用于确定它是否是datapower抛出的挑战。只要有401次挑战,您的客户端代码就会返回true。即使对于应该纠正的非数据传输挑战,这也将返回真实。

handleChallengesubmitLoginFormCallback方法中被明确调用,这是错误的。仅当handleChallenge方法返回true时,才会由SDK调用canHandleResponse

请访问this教程,了解有关如何在客户端应用程序中使用网关质询处理程序的更多信息。