【问题标题】:IBM Worklight 5.0.5 - Unable to enable Application Authenticity in a Hybrid applicationIBM Worklight 5.0.5 - 无法在混合应用程序中启用应用程序真实性
【发布时间】:2013-08-08 18:37:24
【问题描述】:

我一直在尝试实施和测试 Worklight 的应用程序真实性功能,但未能成功。我已经查看了该站点上的每个帖子,以及 WL 信息中心的信息,但没有成功。我正在详细解释我所做的事情以及我看到的结果,希望有人能够帮助我。

环境: 安装在 Windows 7 Enterprise 上的 Worklight Studio 5.0.5 消费者版 安装在 Windows 7 Enterprise 上的 Worklight Server 5.0.5 消费者版

WL Server 正在 Worklight Server 安装提供的 Websphere Application Server Liberty 配置文件中运行

WL Server 正在使用安装包提供的 derby 数据库。

实施步骤:

  1. 在 authenticationConfig.xml 中添加(取消注释)安全测试

    <mobileSecurityTest name="mobileTests"> 
        <testDeviceId provisioningType="none"/>
        <testAppAuthenticity/>
        <testUser realm="wl_anonymousUserRealm"/>
    </mobileSecurityTest>
    
  2. 重建 .war 文件并将其部署到 Worklight Server。

  3. 修改 initOptions.js 使“connectOnStartup : true”

  4. 修改application-descriptor.xml,指定Android应用的安全测试,添加publicSigningKey

    <android version="1.1" securityTest="mobileTests">
    <worklightSettings include="false"/>
    <security>
        <encryptWebResources enabled="false"/>
        <testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
        <publicSigningKey>.......</publicSigningKey>
    </security>
    

  5. 重新构建应用程序并将其部署到 WL 服务器。

  6. 创建签名的.apk文件并上传到应用中心。

  7. 在物理设备上安装应用程序(Samsung Galaxy Tab 2,Android 4.1.1)

  8. 启动应用程序。

当我从 WL 控制台或在物理设备上以“预览”模式启动应用程序时,我最终会显示相同的错误。我收到的错误是:

{"errorCode":"UNEXPECTED_ERROR","errorMsg":"userIdentityForAPI 为空。检查您的应用程序的身份验证要求(never、onStartup、onDemand)。这些设置必须与部署的应用程序匹配"}

我的配置中有什么遗漏吗?

【问题讨论】:

  • WL 6.0.1 中的同样问题:Nov 4, 2013 2:21:53 PM com.worklight.gadgets.serving.GadgetAPIServlet doGetOrPost WARNING: FWLSE0009W: User identity is null. Check your application''s authentication requirements. These settings must match to the deployed application [project wlm] Nov 4, 2013 2:21:53 PM com.worklight.gadgets.serving.GadgetAPIServlet createAjaxRequestExceptionJSON SEVERE: FWLSE0020E: Ajax request exception: FWLSE0009W: User identity is null. Check your application''s authentication requirements. These settings must match to the deployed application [project wlm] [project wlm]
  • @Jim,如果此问题已解决,请将其标记为已回答。

标签: android ibm-mobilefirst worklight-security


【解决方案1】:

使用最新的 Worklight Studio Consumer Edition 插件 v6.0.0.1,我完成了以下操作。我已经成功地在 Android 环境中基于 Worklight 的应用程序中使用了 App Authenticity。

  1. 创建了一个新的 Worklight 项目
  2. 添加了 Android 环境
  3. initOptions.js > connectOnStartup:true
  4. authenticationConfig.xml > 取消对 mobileSecurityTest 的注释:

    <mobileSecurityTest name="mobileTests">          
        <testAppAuthenticity/> 
        <testDeviceId provisioningType="none" />  
    </mobileSecurityTest>
    

    也可以使用自定义安全测试:

    <customSecurityTest name="customTests">
              <test realm="wl_antiXSRFRealm" step="1"/>
              <test realm="wl_authenticityRealm" step="1"/>
              <test realm="wl_remoteDisableRealm" step="1"/>
              <test realm="wl_anonymousUserRealm" isInternalUserID="true" step="1"/>
          test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID="true" step="2"/>
     </customSecurityTest>
    
  5. 使用了 Google 提供的默认 debug.keystore(在生产环境中,应使用您自己的密钥库)

  6. 通过右键单击 Android 文件夹 > 提取公共签名密钥(自动添加到 application-descriptor.xml)使用此密钥库
  7. 全部构建并部署
  8. 右键单击生成的Android项目>运行方式>Android应用程序(在生产环境中,右键单击生成的Android项目>Android工具>导出签名的应用程序包>安装签名的.apk>启动)李>

验证:

  1. 当在 Worklight Console 中将 App Authenticity 规则设置为“已启用”时,检查该应用是否成功连接到 Worklight Server
  2. 更改了 application-descriptor.xml 中的公共签名密钥并重新部署到服务器
  3. 当在 Worklight Console 中将 App Authenticity 规则设置为 Enabled, blocking 时,检查应用程序现在失败连接到 Worklight Server
  4. 如果设置为Enabled, serving,则检查应用是否通过
  5. 如果设置为Disabled,则检查应用是否通过

在我的测试中:

  • 我使用的是 Windows 7 中的 Worklight Studio Consumer Edition(带有嵌入式 Liberty 应用程序服务器),而不是您将 Worklight Server 部署到的单独应用程序服务器。只要完成上述相同的步骤(稍作改动 - 还需要部署 .wlapp),我看不出有任何区别......
  • 确保您正确获取了密钥库部分;也就是说,在服务器和应用程序中使用相同的密钥库。

【讨论】:

  • 谢谢,我们会继续尝试。但是,似乎唯一的区别是 Jim 和我们在移动测试中明确设置了&lt;testUser realm="wl_anonymousUserRealm"/&gt;。那是禁止的吗?或者我们的 Java 密钥库有问题。但这会导致这种User identity is null 类型的日志消息吗?
  • 请参阅以下博客文章,其中详细解释了安全测试的概念及其结构:ibm.com/developerworks/community/blogs/worklight/entry/…
  • 是的,这是我们使用的资源。那里的示例将wl_anonymousUserRealm 作为mobileTest 的一部分-您的答案没有!这就是混乱的原因。
  • @christianmenkens,太好了。如果我的回答有帮助,请将其标记为已回答。否则,将解决方案作为新答案提供并标记...
  • 我最初并没有问这个问题。所以我可以标记它?!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多