1

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

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

响应 [https://xxxx.xxxx.com:443/worklight/apps/services/random] 成功:应用程序类“com.ibm.ws.webcontainer.session.impl.HttpSessionContextImpl.checkSecurity():685”引发的异常
  SESN0008E: 以匿名身份认证的用户尝试访问用户拥有的会话:NewRealm/CN=test user,OU=Temporary Users,OU=Acc,DC=xxxx,DC=com。

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

Android Message: Uncaught 9 at file:///data/data/com.xxxx.xxxxapp/files/www/default/wlclient/js/encryptedcache.js:63 在哪里尝试调用 WL.EncryptedCache.read

使用的 Worklight 版本是
Windows 2008 R2
WebSphere Liberty 配置文件上的 5.0.5 Consumer Edition(带有 Oracle 11i)

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

Authenticator - WebSphereFormBasedAuthenticator & LoginModule - WASLTPAModule

4

2 回答 2

1

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

看起来像身份验证问题:

匿名身份验证的用户试图访问用户拥有的会话:NewRealm/CN=test user,OU=Temporary Users,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当您点击齿轮图标 > 常规 > 控制台时,会有一个复选框。

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

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

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

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

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

例如:

图片

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

于 2013-07-05T22:30:33.027 回答
0

匿名身份验证的用户试图访问用户拥有的会话:NewRealm/CN=test user,OU=Temporary Users,OU=Acc,DC=xxxx,DC=com。

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

于 2013-07-10T15:56:36.840 回答