如何在 JSONStore 中存储加密 key/password

How to store encryption key/password in JSONStore

我正在使用 JSONStore 在我的项目中存储一些数据,但我的问题是我想存储一个用于解锁数据的密钥。

MobileFirst 是否提供任何方式来

我相信您想加密 JSONStore 集合中的数据,同时您希望能够在不需要用户输入密码的情况下解密该集合。

方法一:客户端

如果您想在 iOS 中实现这一点,您可以使用 Touch ID 来达到这个目的。您可以前往 https://www.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/com.ibm.worklight.dev.doc/devref/t_setting_up_touch_id_jsonstore.html

阅读更多相关信息

对于 Android 没有开箱即用的集成,但在 Android Marshmallow (6.0) 中有一个 API 指纹扫描仪,您也可以使用它. https://developer.android.com/about/versions/marshmallow/android-6.0.html#fingerprint-authentication

基本上,使用上述方法,您将创建一个随机密码并将其安全地存储在设备中。然后设备会提示用户进行身份验证(指纹扫描仪或 PIN 码),如果成功,您将可以访问该随机密码。

方法二:服务器端

在这种方法中,您将使用适配器来散列从客户端发送的 token/string。为此,您需要使用一些保持不变的东西,即设备 ID WL.Device.getID() https://www.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/com.ibm.worklight.apiref.doc/html/refjavascript-client/html/WL.Device.html#getID

app.js

WL.Device.getID(function(response){
  var id = response.deviceID;

  var req = WLResourceRequest('/adapters/Util/hash', WLResourceRequest.POST);

  return req.sendFormParameters({
    pass: id 
  });
}).then(function(response){
  var passwordHash = response.responseJSON.hash;


  // open JSONStore collection with the passwordHash
});

在您的适配器中,您可以散列您的 password/device ID,然后 return 它到设备以打开 JSONStore 集合。如果您想在 Java 适配器

中散列密码,您可以检查以下 post How can I hash a password in Java?

这种方法有点棘手,因为您需要以某种方式进行身份验证以确保您只是合法用户的 opening/decrypting JSONStore。