Ibm mobilefirst Worklight JSONStore拒绝某些用户密码而不是其他密码
这里有个奇怪的。iOS 7.1上Worklight 6.1.0.01中的JSONStore似乎任意拒绝了一些密码 下面是我们用来初始化JSONstore的代码:Ibm mobilefirst Worklight JSONStore拒绝某些用户密码而不是其他密码,ibm-mobilefirst,jsonstore,Ibm Mobilefirst,Jsonstore,这里有个奇怪的。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 =
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哈希输出为B5DE1DBBD09C5F8CF78D858EB4ED09E3B9826F9C35C950D164E8ACCF77775082
使用此哈希作为密码,用户可以初始化数据库
我有另一个用户ad2tst密码:
此用户的sha256的输出为
607c04ef944b36ec939d39f7c6b24757776918b8425e5a3b912738d6dea0ebea
使用此哈希作为密码,此用户无法初始化数据库
如果用户ad2tst使用密码(给出1FEFF7F75CFD73FC796D9DD612261B3F72F4292CE76AE3A5E92F7B1DB2FD038的散列),则用户可以初始化数据库
这个问题不仅仅局限于这两个测试用户。我们的实时用户也表现出同样的问题
我们从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":{}}
无效的\u KEY\u ON\u PROVISION错误是由位于Worklight本机代码深处的JSONStore插件的“PROVISION”方法生成的
在下面的一个尝试性回答之后;应用程序的每次运行都是在干净的安装上完成的。试验循环为:
因此,这不是数据库已经用另一个密码加密的情况。设置上的无效密钥意味着您首先用一个密码加密了存储,然后试图用另一个(错误)密码打开它 在尝试使用新密码之前,请确保您使用的是其他用户名,或者先销毁存储
如果你破坏了商店,然后使用了其他密码,它应该可以使用。如果你有问题,StackOverflow是一个获取答案的好地方。不过,对于bug报告,我建议。如果你正在寻找一个新的功能,我建议。这不是处理这两个问题的正确地点 有几件事我想指出: 与Android不同,Android使用加密数据保护密钥(DPK)进行持久化。iOS使用的是。在这些差异中,卸载应用程序时会删除共享首选项中的数据。除非采取其他步骤,否则卸载应用程序时不会删除密钥链中的数据。下面是一个示例,演示了在重新安装应用程序时如何清除密钥链。我相信有一个Worklight混合API可以使用,这是有文档记录的。我还没有真正使用过它,所以你的单位可能会有所不同。JSONStore的共享首选项和密钥链的使用已记录在案 如果每次重新安装应用程序时总是调用JSONStore
destroy
API,我认为您的问题将得到解决(或者至少得到缓解),这样您将获得与Android相同的行为。如果在使用新用户名和密码调用init
API之前调用closeAll
API,则可以使用同一应用程序与不同的用户协作。changePassword
API将更新用于访问存储中内容的密码
我根据你的问题做了一个新的,看一看。这个想法是用一个用户+通过、添加、查找和关闭来打开一个商店。然后用另一个用户打开另一个存储+通过、添加、关闭、再次打开并查找存储的数据。所述测试用例正在使用Worklight v6.1在iOS 7.1上传递。请注意,我使用了您输入的用户名和密码:
+ad1tst
B5DE1DBBD09C5F8CF78D858EB4ED09E3B9826F9C35C950D164E8ACCF77582
+ad2test
607c04ef944b36ec939d39f7c6b24757776918b8425e5a3b912738d6dea0ebea
- 如果要报告问题,请打开PMR。我希望我上面的建议能解决这个问题,但可能是别的什么东西坏了,我误解了这个问题
- 如果需要更好的API来处理特定的用户场景,请打开功能请求。我认为所提供的用例是有效的,这是值得追求的李>