Базовый метод аутентификации HTTP для аутентификации мобильного клиента через Datapower

Я использую 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;
 };

1 ответ

Ваш код обработчика вызовов шлюза является неправильным и вызывает все эти проблемы.

canHandleResponse Этот метод используется для определения того, является ли это вызов, брошенный силой данных, или нет. Ваш код клиента возвращает true, когда возникает проблема 401. Это вернет истину, даже если проблемы, не связанные с мощностью данных, должны быть исправлены.

а также handleChallenge явно вызывается в submitLoginFormCallback метод, который является неправильным. handleChallenge будет вызываться SDK только тогда, когда canHandleResponse метод возвращает истину.

Пожалуйста, просмотрите этот учебник для получения дополнительной информации о том, как использовать обработчик вызовов шлюза в вашем клиентском приложении.

Другие вопросы по тегам