工作灯真实性
Worklight Authenticity
我们正在Worklight 上开发一个混合应用程序,我们需要实现应用程序的真实性。
我们将 Worklight Enterprise 版本 6.2.0.1 与 IBM 应用程序中心一起使用。
但是,当我们在 Android 上启动应用程序时,我们在服务器日志中看到以下错误(iOs 同样,但会提供 Android 日志)。
[1/19/15 15:25:05:388 EST] 00000254 WLNewAuthenti E com.worklight.core.auth.ext.appauth.WLNewAuthenticityScheme isInvalidAndroidParams FWLSE0260E:android 真实性检查的 packageName 缺失或为空,无法测试真实性。如果 App Authentication 在 Worklight Console 中未设置为 'Disabled' 或 'Enabled, servicing',请求将失败。 [项目移动应用]
[1/19/15 15:25:05:388 EST] 00000254 WLNewAuthenti E com.worklight.core.auth.ext.appauth.WLNewAuthenticityScheme isInvalidAndroidParams FWLSE0260E:android 真实性检查的 publicsigningkey 缺失或为空,无法测试真实性。如果 App Authentication 在 Worklight Console 中未设置为 'Disabled' 或 'Enabled, servicing',请求将失败。 [项目手机银行].
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>
申请-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控制台显示真实性的三个值"Disable - Enabled, servicing - Enabled , Blocking"
当我们输入 "Enabled, Blocking" 或 "Enabled , servicing" 时,我们会在 post 顶部共享的服务器上获取错误日志。
在应用程序屏幕上,我们收到错误消息“处理来自应用程序的请求时遇到错误”。
请指教。
谢谢
根据错误消息,您缺少 Android 程序包名称(在 application-descriptor.xml 中)。
This is the Authenticity tutorial for Hybrid apps 适用于 v6.3,但适用于 6.2。来自 Android 说明:
Take the Application package name value from the package attribute of
the manifest node in the AndroidManifest.xml. If you decide to change
the value to another, verify that you change it in both locations.You
can also directly edit application-descriptor.xml and add a
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>
问题已解决。
解决方案:
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-申请中-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" >
这就是为什么当我们将应用真实性值设置为 "Enable,Blocking" 时,该应用被我们的 WL 服务器阻止的原因。
感谢@Idan 的帮助。
我们正在Worklight 上开发一个混合应用程序,我们需要实现应用程序的真实性。 我们将 Worklight Enterprise 版本 6.2.0.1 与 IBM 应用程序中心一起使用。 但是,当我们在 Android 上启动应用程序时,我们在服务器日志中看到以下错误(iOs 同样,但会提供 Android 日志)。
[1/19/15 15:25:05:388 EST] 00000254 WLNewAuthenti E com.worklight.core.auth.ext.appauth.WLNewAuthenticityScheme isInvalidAndroidParams FWLSE0260E:android 真实性检查的 packageName 缺失或为空,无法测试真实性。如果 App Authentication 在 Worklight Console 中未设置为 'Disabled' 或 'Enabled, servicing',请求将失败。 [项目移动应用] [1/19/15 15:25:05:388 EST] 00000254 WLNewAuthenti E com.worklight.core.auth.ext.appauth.WLNewAuthenticityScheme isInvalidAndroidParams FWLSE0260E:android 真实性检查的 publicsigningkey 缺失或为空,无法测试真实性。如果 App Authentication 在 Worklight Console 中未设置为 'Disabled' 或 'Enabled, servicing',请求将失败。 [项目手机银行].
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>
申请-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控制台显示真实性的三个值"Disable - Enabled, servicing - Enabled , Blocking"
当我们输入 "Enabled, Blocking" 或 "Enabled , servicing" 时,我们会在 post 顶部共享的服务器上获取错误日志。 在应用程序屏幕上,我们收到错误消息“处理来自应用程序的请求时遇到错误”。
请指教。 谢谢
根据错误消息,您缺少 Android 程序包名称(在 application-descriptor.xml 中)。
This is the Authenticity tutorial for Hybrid apps 适用于 v6.3,但适用于 6.2。来自 Android 说明:
Take the Application package name value from the package attribute of the manifest node in the AndroidManifest.xml. If you decide to change the value to another, verify that you change it in both locations.You can also directly edit application-descriptor.xml and add a 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>
问题已解决。
解决方案:
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-申请中-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" >
这就是为什么当我们将应用真实性值设置为 "Enable,Blocking" 时,该应用被我们的 WL 服务器阻止的原因。
感谢@Idan 的帮助。