Ibm mobilefirst IBM Worklight v5.0.5-加密脱机缓存在Android或iOS中不工作

Ibm mobilefirst IBM Worklight v5.0.5-加密脱机缓存在Android或iOS中不工作,ibm-mobilefirst,offline-caching,encryption,Ibm Mobilefirst,Offline Caching,Encryption,调试时,我们观察到以下行为: 1) 尝试从服务器获取加密密钥时,在两个(iOS或Android)平台上都出现错误 回应[https://xxxx.xxxx.com:443/worklight/apps/services/random] 成功:应用程序类引发异常 'com.ibm.ws.webcontainer.session.impl.HttpSessionContextImpl.checkSecurity():685' SESN0008E:已通过匿名身份验证的用户 试图访问用户拥有的会话:Ne

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

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 用户,OU=临时用户,OU=Acc,DC=xxxx,DC=com

2) 尝试读取android上的存储值时出错为[Logcat]

Android消息:未捕获9 file:///data/data/com.xxxx.xxxxapp/files/www/default/wlclient/js/encryptedcache.js:63 在何处尝试调用WL.EncryptedCache.read

所使用的Worklight版本是在
Windows 2008 R2
WebSphere Liberty概要文件

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


Authenticator-WebSphereFormBasedAuthenticator&LoginModule-WASLTPAModule

以下不是真正的答案,因为我不熟悉身份验证(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开发者工具,当您单击gear图标>General>Console时,会出现一个复选框,用于
Log XMLHttpRequests

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

http://localhost:10080/wlproj/apps/services/random
9053bdcfd902aac3dfb59a9874c9cf55223b7d17
您可以使用或查看HTTP流量

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

例如:


请注意,它从不进入服务器,一切都是在本地完成的。

以下不是真正的答案,因为我不熟悉身份验证(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开发者工具,当您单击gear图标>General>Console时,会出现一个复选框,用于
Log XMLHttpRequests

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

http://localhost:10080/wlproj/apps/services/random
9053bdcfd902aac3dfb59a9874c9cf55223b7d17
您可以使用或查看HTTP流量

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

例如:

请注意,它从不进入服务器,一切都是在本地完成的

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

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

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


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

我们可以获取一些代码段扫描我们获取一些代码段thnx cnandreu。但是,我们没有在本地生成随机令牌的选项。但是,我们没有在本地生成随机令牌的选项。