IBM Worklight v5.0.5 - 加密的脱机缓存无法在Android或iOS中运行

时间:2013-07-05 19:43:56

标签: ibm-mobilefirst offline-caching encryption

在调试时,我们观察到以下行为:

1)尝试从服务器获取加密密钥时,在(iOS或Android)平台上都出现错误

  

回复[https://xxxx.xxxx.com:443/worklight/apps/services/random]   success:应用程序类抛出的异常   'com.ibm.ws.webcontainer.session.impl.HttpSessionContextImpl.checkSecurity():685'   
SESN0008E:以匿名身份验证的用户具有   试图访问用户拥有的会话:NewRealm / CN = test   user,OU =临时用户,OU = Acc,DC = xxxx,DC = com。

2)当试图读取android上的存储值错误是[Logcat]

  

Android消息:未知9点   文件:///data/data/com.xxxx.xxxxapp/files/www/default/wlclient/js/encryptedcache.js:63   在哪里尝试调用WL.EncryptedCache.read

使用的Worklight版本是5.0.5 Consumer Edition(使用Oracle 11i) Windows 2008 R2
WebSphere Liberty概要文件

Worklight服务器位于IBM Datapower XI52之后。对服务器的所有SSL调用都通过DP进行。

Authenticator - WebSphereFormBasedAuthenticator& LoginModule - WASLTPAModule

2 个答案:

答案 0 :(得分:1)

以下不是真正的答案,因为我不熟悉身份验证(LTPA,FormBasedAuth,Data Power等)......只是一些可以帮助您调试/隔离问题的注释。

看起来像验证问题:

  

经过身份验证的匿名用户尝试访问会话   用户拥有:NewRealm / CN =测试用户,OU =临时   用户,OU =度Acc,DC = XXXX,DC = COM。

不使用加密脱机缓存(EOC)。

EOC将尝试获取一个随机令牌,调用以下函数:

WL.EncryptedCache.secureRandom(function (data) {
   console.log(data);
});

应输出如下内容:

response [/apps/services/random] success: 9053bdcfd902aac3dfb59a9874c9cf55223b7d17
9053bdcfd902aac3dfb59a9874c9cf55223b7d17

您可以在JS控制台中查看输入以下内容的函数源代码:

WL.EncryptedCache.secureRandom

如果您使用的是Google Chrome开发者工具,当您点击齿轮图标>时,Log XMLHttpRequests会出现一个复选框。一般>控制台。

您也可以尝试直接申请网址。假设主机是localhost,端口是10080,项目名称是wlproj:

http://localhost:10080/wlproj/apps/services/random
9053bdcfd902aac3dfb59a9874c9cf55223b7d17

您可以使用WiresharkCharles Proxy查看HTTP流量。

如果您不介意在本地生成随机令牌(安全性较低,AFAIK),我想这会为您解决EOC问题:

WL.EncryptedCache.secureRandom = function(callback){callback(Math.random()+"")}

例如:

image

请注意,它永远不会进入服务器,一切都在本地完成。

答案 1 :(得分:0)

  

经过身份验证的匿名用户尝试访问用户拥有的会话:NewRealm / CN =测试用户,OU =临时用户,OU = Acc,DC = xxxx,DC = com。

这通常意味着与用户发送的会话(会话cookie)发生冲突属于用户(在本例中),但作为cookie发送的LTPA令牌未发送或无效。可能有几个原因。这种最佳方法是在datapower和worklight服务器之间进行跟踪,以确保将LTPA令牌发送到worklight服务器。如果是,请验证是否满足所有LTPA要求(同步时间,两台计算机上的私钥相同)。