【发布时间】:2014-07-05 10:35:01
【问题描述】:
这里有一个奇怪的。 iOS 7.1 上 Worklight 6.1.0.01 中的 JSONStore 似乎任意拒绝某些密码。
这是我们用来初始化 JSONstore 的代码:
var bitArray = sjcl.hash.sha256.hash(username + ':'+ password);
var digest_sha256 = (sjcl.codec.hex.fromBits(bitArray));
options.username = username
options.password = digest_sha256;
options.localKeyGen = true;
options.clear = false;
collections[this.collection1] = collection1;
collections[this.collection2] = collection2;
collections[this.collection3] = collection3;
WL.JSONStore.init(collections, options).then(function() {
onSuccess();
}).fail(function(errorObject) {
onFailure();
});
我有一个用户:ad1tst 密码: 此用户的 sha256 哈希输出为 b5de1dfbbd09c5f8cf78d858eb4ed09e3b9826f9c35c950d164e8accf7775082
使用这个哈希作为密码,用户可以初始化数据库。
我有另一个用户 ad2tst 密码: 该用户的 sha256 输出为 607c04ef944b36ec939d39f7c6b24757776918b8425e5a3b912738d6dea0ebea
使用此哈希作为密码,此用户无法初始化数据库。
如果用户 ad2tst 使用密码(其哈希值为 1feff7f75cfd73fc796d9dd612261b3f72f4292ce76ae3a5e92f7b1dbb2fd038),则用户可以初始化数据库。
此问题不仅限于这 2 个测试用户。我们的在线用户也出现了同样的问题。
我们从 JSONStore 运行时收到以下错误:
__33-[JsonStoreQueue setDatabaseKey:]_block_invoke [Line 128] Invalid password
2014-05-16 16:39:26.611 Audits[865:60b] THREAD WARNING: ['StoragePlugin'] took '71.429932' ms. Plugin should use a background thread.
2014-05-16 16:39:26.612 Audits[865:60b] [ERROR] [wl.jsonstore] {"src":"initCollection","err":-3,"msg":"INVALID_KEY_ON_PROVISION","col":"collection1","usr":"ad2tst","doc":{},"res":{}}
INVALID_KEY_ON_PROVISION 错误是由 JSONStore 插件的 'provision' 方法在 Worklight 的本机代码深处生成的。
在下面的一个尝试答案之后;应用程序的每次运行都是在全新安装时完成的。测试周期为:
- 安装应用程序
- 与其中一位测试用户一起运行
- 观察失败或通过,具体取决于提供的用户名/密码对
- 删除应用
- 转到第 1 步
所以,这不是数据库已经用另一个密码加密的情况。
【问题讨论】: