【问题标题】:How to implement password protect security in JsonStore Worklight 6.2?如何在 JsonStore Worklight 6.2 中实现密码保护安全?
【发布时间】:2014-10-30 07:09:16
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 确实,这和我每次用户输入密码时的第一个选项一样。但是在某些情况下,用户不想要这个(例如记住我的功能),我们需要将它存储在设备上的某个地方,最好的选择是 IMO,一个来自操作系统的安全存储。 iOS 钥匙串是每个应用程序...所以,它不能从其他应用程序访问(除非 iOS 或应用程序本身存在安全漏洞)。
    • 您可以在应用程序之间共享钥匙串中的项目,有一个称为简单数据共享的 Worklight 功能可以实现这一点,您可以在文档here 中阅读更多相关信息。
    【解决方案2】:

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

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

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

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

    当然,如果您使用混合模式,您将需要某种 Cordova 插件来添加、读取、更新、重置钥匙串中的密码,以便您可以通过 JavaScript 进行这些操作。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2014-08-17
      • 2014-09-08
      • 2015-02-16
      • 2013-01-22
      • 2016-01-05
      • 2011-09-20
      • 1970-01-01
      • 2014-05-03
      • 2012-06-15
      相关资源
      最近更新 更多