如何在 JSONStore 中存储加密密钥/密码
Posted
技术标签:
【中文标题】如何在 JSONStore 中存储加密密钥/密码【英文标题】:How to store encryption key/password in JSONStore 【发布时间】:2016-07-29 16:02:14 【问题描述】:我正在使用 JSONStore 在我的项目中存储一些数据,但我的问题是我想存储一个用于解锁数据的密钥。
MobileFirst 是否提供任何方式
在客户端或服务器端安全地存储密钥。 有什么方法可以从适配器获取密钥或解锁 JSONStore 通过连接到适配器。【问题讨论】:
【参考方案1】:我相信您希望加密 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 码),如果成功,您将可以访问该随机密码。
方法二:服务器端
在这种方法中,您将使用适配器来散列从客户端发送的令牌/字符串。为此,您需要使用保持不变的内容,即设备 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
);
在您的适配器中,您可以散列您的密码/设备 ID,然后将其返回到设备以打开 JSONStore 集合。如果您想在 Java 适配器中对密码进行哈希处理,可以查看以下帖子 How can I hash a password in Java?
这种方法有点棘手,因为您需要以某种方式对其进行身份验证,以确保您只为合法用户打开/解密 JSONStore。
【讨论】:
以上是关于如何在 JSONStore 中存储加密密钥/密码的主要内容,如果未能解决你的问题,请参考以下文章