【问题标题】:HTTP basic authentication method to authenticate the mobile client through Datapower通过 Datapower 对移动客户端进行身份验证的 HTTP 基本身份验证方法
【发布时间】:2017-04-28 17:57:47
【问题描述】:

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

我们如何使用HTTP基本身份验证方法通过datapower对移动客户端进行身份验证。请帮助我提供 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;
 };

【问题讨论】:

    标签: authentication ibm-mobilefirst ibm-datapower


    【解决方案1】:

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

    canHandleResponse方法用于判断是否是datapower抛出的challenge。只要有 401 质询,您的客户端代码就会返回 true。即使对于应该纠正的非数据电源挑战,这也将返回 true。

    并且handleChallengesubmitLoginFormCallback 方法中被显式调用,这是错误的。只有当canHandleResponse 方法返回true 时,handleChallenge 才会被 SDK 调用。

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

    【讨论】:

    • 感谢 Vittal 的回复。 Datapower 为 http 基本身份验证配置,因此它为每个未经授权的请求返回 401。本教程未提供有关如何使用 HTTP 基本身份验证方法通过 Datapower 对移动客户端进行身份验证的信息
    猜你喜欢
    • 2017-09-18
    • 2018-07-03
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多