如何在JsonStore Worklight 6.2中实现密码保护安全性?

时间:2014-09-05 10:41:17

标签: ibm-mobilefirst password-protection jsonstore worklight-security

我想在worklight中使用JsonStore保护实现应用程序我想根据登录用户存储密码,并将这些密码添加到WL.JSONStore.init(collections,options)中的选项中。数据对象data={};

中的其余详细信息

如何提取密码保存WL.JSONStore.init(collections,options)选项对象,以便为其余功能进行api调用?

2 个答案:

答案 0 :(得分:1)

您有两种选择(虽然我不是安全专家):

  1. 每次打开应用程序时,请用户使用应用程序(以及JSONStore)输入密码,然后在WL.JSONStore.init方法中检查密码(如果密码正确,商店将打开,否则,该方法将失败)。

  2. 将密码存储在安全存储中 - 钥匙串。对于iOS,请参阅此link。对于Android,我认为这相当于link

  3. 因此,用户第一次打开应用程序时,您会存储密码,每次用户打开应用程序时,您都会检索密码并将其传递给WL JSONStore。如果用户想要更新密码(例如,您要遵循安全策略),则必须更新密钥链中的密码。

    当然,如果你是混合型,你需要某种Cordova插件来添加,读取,更新,重置钥匙串中的密码,这样你就可以通过JavaScript进行这些操作。

    希望它有所帮助!

答案 1 :(得分:1)

我对这个问题的看法:

将密码存储在设备中确实不是一个好习惯。

还有一个额外的问题,即用户名和密码来自哪里?注册(而不是登录)何时发生?这是IMO的重要信息。

在我的一个应用程序中,我初始化了一个JSONStore并使用用户密码对其进行了加密,并在集合中保存了用户名。

这样,下次用户尝试打开JSONStore时(读取:"登录"),它将尝试使用输入的密码。如果此步骤成功,则它将输入的用户名与存储的用户名进行比较。如果此步骤也成功,则可以假定有效的登录凭据。

var collections = {
    userCredentials : {
        searchFields : {
            username: 'string'
        }
    }
};

var username, password;

username = $("#username").val();
password = $"("#password").val();

WL.JSONStore.init(collections, {password:password})
// first step is successful
.then(function() {          
    return WL.JSONStore.get("myCollectionName").find({username:username});
})  
// second step is successful
.then(function(searchResult) {
    if (searchResult[0].json.username == username) {
        // valid login.
    }
})
.fail(function() {
    alert ("Invalid credentials, try again.);
})

请注意,上面的代码有点抽象,并且"泛型",需要处理所有类型的边缘情况。
我强烈建议彻底阅读所有JSONStore documentationtraining modules