工作真实性

时间:2015-01-19 20:39:44

标签: ibm-mobilefirst worklight-security

我们正在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控制台显示真实性的三个值“禁用 - 启用,服务 - 启用,阻止”

当我们输入“启用,阻止”或“启用,服务”时,我们将在帖子顶部共享的服务器上获取错误日志。 在应用程序屏幕上,我们收到错误“处理来自应用程序的请求时遇到错误。”

请指教。 谢谢

2 个答案:

答案 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>