Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security Worklight 2适配器冲突的安全测试_Security_Adapter_Ibm Mobilefirst - Fatal编程技术网

Security Worklight 2适配器冲突的安全测试

Security Worklight 2适配器冲突的安全测试,security,adapter,ibm-mobilefirst,Security,Adapter,Ibm Mobilefirst,我一直在为适配器进行两次安全测试 安全测试之一是查看用户是否是管理员 第二个安全测试是查看用户是否是项目经理 这两个角色具有不同的访问类型,需要单独处理 因此,我在authenticationConfiguration.xml中的中定义了两个安全测试 对于这两个安全测试,我都在移动应用程序中用javascript制作了它们的领域处理程序 下面是所有代码 问题是: 如果调用了需要进行安全检查的过程,则会调用安全域。但是只有首先加载的安全测试才是继续验证的安全测试,而另一个安全测试甚至没有收到质疑

我一直在为适配器进行两次安全测试

安全测试之一是查看用户是否是管理员

第二个安全测试是查看用户是否是项目经理

这两个角色具有不同的访问类型,需要单独处理

因此,我在authenticationConfiguration.xml中的中定义了两个安全测试

对于这两个安全测试,我都在移动应用程序中用javascript制作了它们的领域处理程序

下面是所有代码

问题是:

如果调用了需要进行安全检查的过程,则会调用安全域。但是只有首先加载的安全测试才是继续验证的安全测试,而另一个安全测试甚至没有收到质疑

有人能告诉我为什么调用这两个安全测试,以及我如何确保它只为正确的适配器调用安全测试。 两种安全测试都是单步身份验证

})

})

ProjectRealmHandler

var AdminAuthRealmChallengeHandler = WL.Client.createChallengeHandler("AdminAuthRealm")
AdminAuthRealmChallengeHandler.isCustomResponse = function(response) {
console.log("ADMIN AUTH");
console.log(response);
if (!response || !response.responseJSON || response.responseText === null) {
    console.log("is costumresponse false 1 No json");
    return false;
}
if (typeof(response.responseJSON.authRequired) !== 'undefined'){
    console.log("is costumresponse true needs auth");
    return true;
} 
else {
    console.log("is costumresponse false 2 else");
    return false;
}
var PMAdminAuthRealmChallengeHandler = WL.Client.createChallengeHandler("PMAuthRealm");
PMAdminAuthRealmChallengeHandler.isCustomResponse = function(response) {
console.log(response);
if (!response || !response.responseJSON || response.responseText === null) {
    return false;
}
if (typeof(response.responseJSON.authRequired) !== 'undefined'){
    return true;
} else {
    return false;
}
})


})

我认为不能对一个身份验证使用两种不同的安全测试。但您可以使用两个受相同自定义安全测试保护的领域,并选择检查顺序。阅读本书第23页

    <procedure name="submitAuthentication"/>
<procedure name="updateProject" securityTest="PM-securityTest"/>
var AdminAuthRealmChallengeHandler = WL.Client.createChallengeHandler("AdminAuthRealm")
AdminAuthRealmChallengeHandler.isCustomResponse = function(response) {
console.log("ADMIN AUTH");
console.log(response);
if (!response || !response.responseJSON || response.responseText === null) {
    console.log("is costumresponse false 1 No json");
    return false;
}
if (typeof(response.responseJSON.authRequired) !== 'undefined'){
    console.log("is costumresponse true needs auth");
    return true;
} 
else {
    console.log("is costumresponse false 2 else");
    return false;
}
AdminAuthRealmChallengeHandler.handleChallenge = function(response){

var authRequired = response.responseJSON.authRequired;

 if (authRequired == true){
     if(response.responseJSON.errorMessage !== null){
            AdminAuthRealmChallengeHandler.submitFailure();
        }else{
        var invocationData = {
                adapter : "AdminAdapter",
                procedure : "submitAuthentication",
                parameters : [ userId, email, connectionsUid ]
            };
        AdminAuthRealmChallengeHandler.submitAdapterAuthentication(invocationData, {});
        }
}
else if (authRequired == false){
    AdminAuthRealmChallengeHandler.submitSuccess();
}
var PMAdminAuthRealmChallengeHandler = WL.Client.createChallengeHandler("PMAuthRealm");
PMAdminAuthRealmChallengeHandler.isCustomResponse = function(response) {
console.log(response);
if (!response || !response.responseJSON || response.responseText === null) {
    return false;
}
if (typeof(response.responseJSON.authRequired) !== 'undefined'){
    return true;
} else {
    return false;
}
PMAdminAuthRealmChallengeHandler.handleChallenge = function(response){
var authRequired = response.responseJSON.authRequired;
console.log(response);

if(response.responseJSON.errorMessage !== null && typeof(response.responseJSON.errorMessage) !== 'undefined'){
    PMAdminAuthRealmChallengeHandler.submitFailure();
}
if (authRequired == true){
     if(response.responseJSON.errorMessage !== null){
            PMAdminAuthRealmChallengeHandler.submitFailure();
        }else{


            var invocationDataPM = {
                    adapter : "ProjectAdapter",
                    procedure : "submitAuthentication",
                    parameters : [ userId, email, connectionsUid ]
                };
            PMAdminAuthRealmChallengeHandler.submitAdapterAuthentication(invocationDataPM, {});
        }

}
else if (authRequired == false){
    PMAdminAuthRealmChallengeHandler.submitSuccess();
}