Базовый метод аутентификации 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
метод возвращает истину.
Пожалуйста, просмотрите этот учебник для получения дополнительной информации о том, как использовать обработчик вызовов шлюза в вашем клиентском приложении.