我们正在Worklight上开发混合应用程序,我们需要实现应用程序的真实性。 我们将Worklight Enterprise版本6.2.0.1与IBM应用程序中心一起使用。 但是,当我们在Android上启动应用程序时,我们在服务器日志中看到以下错误(iO也一样,但会提供Android日志)。
[1/19/15 15:25:05:38 EST] 00000254 WLNewAuthenti E com.worklight.core.auth.ext.appauth.WLNewAuthenticityScheme isInvalidAndroidParams FWLSE0260E:缺少或清空packageName以进行android真实性检查,无法测试真实性。如果在Worklight Console中未将App Authentication设置为“Disabled”或“Enabled,servicing”,则请求将失败。 [项目MobileApp] [1/19/15 15:25:05:38 EST] 00000254 WLNewAuthenti E com.worklight.core.auth.ext.appauth.WLNewAuthenticityScheme isInvalidAndroidParams FWLSE0260E:缺少或清空publicsigningkey进行android真实性检查,无法测试真实性。如果在Worklight Console中未将App Authentication设置为“Disabled”或“Enabled,servicing”,则请求将失败。 [项目MobileBanking]。
authenticationConfig.xml上的安全性测试是:
<securityTests>
<mobileSecurityTest name="MobileAppTestMobile">
<testAppAuthenticity/>
<testDeviceId provisioningType="auto" />
<testUser realm="MobileAppRealm" />
<testDirectUpdate mode="perSession" />
</mobileSecurityTest>
<webSecurityTest name="MobileAppTest">
<testUser realm="MobileAppRealm" />
</webSecurityTest>
<customSecurityTest name="SubscribeServlet">
<test realm="SubscribeServlet" isInternalUserID="true"/>
</customSecurityTest>
</securityTests>
application-descriptor.xml:
<iphone bundleId="ca.company.MobileApp" securityTest="MobileAppTestMobile" version="1.0">
<worklightSettings include="false"/>
<security>
<encryptWebResources enabled="true"/>
<testWebResourcesChecksum enabled="true" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
</security>
</iphone>
<android securityTest="MobileAppTestMobile" version="1.0">
<worklightSettings include="false"/>
<security>
<encryptWebResources enabled="true"/>
<testWebResourcesChecksum enabled="true" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
<publicSigningKey>"We have added our public signing key here by extracting it from our keystore file"</publicSigningKey>
</security>
</android>
我们在更新WAR文件后从头开始部署了所有应用程序。 worklight控制台显示真实性的三个值“禁用 - 启用,服务 - 启用,阻止”
当我们输入“启用,阻止”或“启用,服务”时,我们将在帖子顶部共享的服务器上获取错误日志。 在应用程序屏幕上,我们收到错误“处理来自应用程序的请求时遇到错误。”
请指教。 谢谢
答案 0 :(得分:2)
问题已解决。
解决方案:
1-我们将authenticationConfig.xml中的MobileSecurityTest更改为customSecurityTest,如下所示,并重新部署了WAR文件:
<customSecurityTest name="MobileSecurityTest">
<test realm="wl_antiXSRFRealm" step="1"/>
<test realm="wl_authenticityRealm" step="1"/>
<test realm="wl_remoteDisableRealm" step="1"/>
<test realm="wl_directUpdateRealm" mode="perSession" step="1"/>
<test realm="wl_anonymousUserRealm" isInternalUserID="true" step="1"/>
<test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID="true" step="2"/>
</customSecurityTest>
2-在application-descriptor.xml中:
对于android,我使用了Idan关于添加<packageName>
属性的内容。
<android securityTest="MobileSecurityTest" version="1.0">
<worklightSettings include="false"/>
<security>
<encryptWebResources enabled="true"/>
<testWebResourcesChecksum enabled="true" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
<publicSigningKey>"Our public signing Key placed here"</publicSigningKey>
<packageName>ca.company.MobileTest</packageName>
</security>
</android>
对于iOS,问题出在applicationId中,我们认为applicationId值是bundleId的最后一部分,
例如:如果bundleId是“com.company.Myapp”,那意味着applicaiotnId是“Myapp”,这不是真的。
这是不正确的定义:
<iphone bundleId="ca.company.MobileTestiPhone" applicationId="MobileTestiPhone" securityTest="MobileSecurityTest" version="1.0" >
applicationId是worklight.plist文件中的值,该文件位于iPhone或iPad本机文件夹内,并且在执行构建后生成此文件。 对于我们的应用,它具有完全不同的价值。
正确的是:
<iphone bundleId="ca.company.MobileTestiPhone" applicationId="MobileTest" securityTest="MobileSecurityTest" version="1.0" >
当我们将App真实性值设置为“启用,阻止”时,这就是我们的WL服务器被阻止的原因。
感谢@Idan的帮助。
答案 1 :(得分:0)
根据错误消息,您缺少Android包名称(在application-descriptor.xml中)。
对于v6.3,This is the Authenticity tutorial for Hybrid apps,但6.2的情况相同。来自Android说明:
从package属性中获取Application包名称值 AndroidManifest.xml中的清单节点。如果你决定改变 另一个值,验证您是否在两个位置更改它。您 也可以直接编辑application-descriptor.xml并添加一个 的packageName:
<android version="1.0"> <worklightSettings include="false"/> <security> <encryptWebResources enabled="false"/> <testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/> <publicSigningKey>MIGff ...</publicSigningKey> <packageName>com.MyBankApp</packageName> </security> </android>