LTPA 挑战处理程序 Javascript MFP8
LTPA ChallengeHandler Javascript MFP8
我正在开发新的 MFP8 平台,我想在混合应用程序中实施 LTPA 身份验证。在网络上搜索后,我发现了 LTPA ChallengeHandler (https://github.com/mfpdev/ldap-and-ltpa-sample/tree/master/LTPABasedSample) 的 Swift 实现。但是,如果我尝试在 JS challengeHandler 中复制相同的行为,它就不起作用。
在我的 challengeHandler 实现下方:
var UserLoginChallengeHandler = function() {
var isChallenged = false;
var securityCheckName = 'LTPA';
var URL;
var userLoginChallengeHandler = WL.Client.createSecurityCheckChallengeHandler(securityCheckName);
document.getElementById("login").addEventListener("click", login);
userLoginChallengeHandler.securityCheckName = securityCheckName;
userLoginChallengeHandler.handleChallenge = function(challenge) {
WL.Logger.debug("handleChallenge");
showLoginDiv();
isChallenged = true;
URL = challenge.loginURL;
};
userLoginChallengeHandler.handleSuccess = function(data) {
WL.Logger.debug("handleSuccess");
isChallenged = false;
showProtectedDiv();
};
userLoginChallengeHandler.handleFailure = function(error) {
WL.Logger.debug("handleFailure: " + error.failure);
isChallenged = false;
if (error.failure !== null){
alert(error.failure);
} else {
alert("Failed to login.");
}
};
function login() {
var basic = "Basic YWRtaW46YWRtaW4="; //base64 of admin:admin
$.ajax({
type: "POST",
url: URL,
headers: {
"Authorization": basic
},
success: function(data, status, xhr){
console.log(data);
userLoginChallengeHandler.submitChallengeAnswer({});
},
error: function(jqXhr, status, error){
console.log(error);
}
});
}
return userLoginChallengeHandler;
};
当我提交对 plain-war 应用程序的请求时,LTPASecurityCheck 的授权方法中的委托人结果为空。
相反,如果我执行 iOS 示例应用程序,主体将被赋值并进行身份验证。
您有解决此奇怪行为的想法吗?
非常感谢,
斯特凡诺
我认为 Swift 示例不是发送 POST 请求而是 GET。您是否尝试过将其作为 GET 发送?
我正在开发新的 MFP8 平台,我想在混合应用程序中实施 LTPA 身份验证。在网络上搜索后,我发现了 LTPA ChallengeHandler (https://github.com/mfpdev/ldap-and-ltpa-sample/tree/master/LTPABasedSample) 的 Swift 实现。但是,如果我尝试在 JS challengeHandler 中复制相同的行为,它就不起作用。 在我的 challengeHandler 实现下方:
var UserLoginChallengeHandler = function() {
var isChallenged = false;
var securityCheckName = 'LTPA';
var URL;
var userLoginChallengeHandler = WL.Client.createSecurityCheckChallengeHandler(securityCheckName);
document.getElementById("login").addEventListener("click", login);
userLoginChallengeHandler.securityCheckName = securityCheckName;
userLoginChallengeHandler.handleChallenge = function(challenge) {
WL.Logger.debug("handleChallenge");
showLoginDiv();
isChallenged = true;
URL = challenge.loginURL;
};
userLoginChallengeHandler.handleSuccess = function(data) {
WL.Logger.debug("handleSuccess");
isChallenged = false;
showProtectedDiv();
};
userLoginChallengeHandler.handleFailure = function(error) {
WL.Logger.debug("handleFailure: " + error.failure);
isChallenged = false;
if (error.failure !== null){
alert(error.failure);
} else {
alert("Failed to login.");
}
};
function login() {
var basic = "Basic YWRtaW46YWRtaW4="; //base64 of admin:admin
$.ajax({
type: "POST",
url: URL,
headers: {
"Authorization": basic
},
success: function(data, status, xhr){
console.log(data);
userLoginChallengeHandler.submitChallengeAnswer({});
},
error: function(jqXhr, status, error){
console.log(error);
}
});
}
return userLoginChallengeHandler;
};
当我提交对 plain-war 应用程序的请求时,LTPASecurityCheck 的授权方法中的委托人结果为空。 相反,如果我执行 iOS 示例应用程序,主体将被赋值并进行身份验证。
您有解决此奇怪行为的想法吗?
非常感谢, 斯特凡诺
我认为 Swift 示例不是发送 POST 请求而是 GET。您是否尝试过将其作为 GET 发送?