在调试时,我们观察到以下行为:
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
答案 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
您可以使用Wireshark或Charles Proxy查看HTTP流量。
如果您不介意在本地生成随机令牌(安全性较低,AFAIK),我想这会为您解决EOC问题:
WL.EncryptedCache.secureRandom = function(callback){callback(Math.random()+"")}
例如:
请注意,它永远不会进入服务器,一切都在本地完成。
答案 1 :(得分:0)
经过身份验证的匿名用户尝试访问用户拥有的会话:NewRealm / CN =测试用户,OU =临时用户,OU = Acc,DC = xxxx,DC = com。
这通常意味着与用户发送的会话(会话cookie)发生冲突属于用户(在本例中),但作为cookie发送的LTPA令牌未发送或无效。可能有几个原因。这种最佳方法是在datapower和worklight服务器之间进行跟踪,以确保将LTPA令牌发送到worklight服务器。如果是,请验证是否满足所有LTPA要求(同步时间,两台计算机上的私钥相同)。