1

我们有一个与 Worklight 6.2 服务器一起使用的 MobileFirst 应用程序 - 也用于生产。我们正在使用 http 适配器:<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">

目前我们正在将生产服务器更改为 7.0.0。在开发服务器上,我们可以测试我们的应用程序并且所有功能都正常。我们在构建配置中使用生产服务器创建了 .war,并与 android .wlapp 一起上传。现在,当应用程序尝试调用生产服务器上的任何适配器函数时,我们会收到 404。invokeProcedure onFailure 返回 UNEXPECTED_ERROR。这是与:

  • 服务器版本:7.0.0.00.20150312-0731
  • 项目WAR版本:7.0.0.00.20150402-2001
  • 适配器名称:XXXXX。版本:7.0.0.00.20150402-2001
  • 应用:XXXXX-android-0.9.7,版本:7.0.0.00.20150402-2001

我们没有在应用程序中启用安全性。是否必须在服务器上启用某些东西才能允许旧类型的适配器调用?
当我们使用升级的 MobileFirst Development Studio 7.0.0.00.20150430 作为开发平台进行测试时 - 相同的服务器版本,我们得到相同的 404(找不到上下文),但是尝试使用授权/v1/clients/instance 而不是 /应用程序/服务/api/XXXXX/android/查询

服务器升级应该解决这个问题吗?我们注意到有可用的更新。

服务器在 https 连接上,但在 WL 6.2 上是相同的。

4

1 回答 1

1

根据评论和提供的 messages.log 中的描述,很明显您正在尝试使用应用程序真实性保护。

此功能在 v6.2 中以某种方式工作,而在 v6.3 及更高版本中以不同方式工作。
从评论看来,您只是在添加publickSigningKey- 这已经不够了。

有关要遵循的步骤,请参阅更新的应用程序真实性保护教程:https ://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-0/authentication-security/application-authenticity-protection/

遵循的一般步骤:

  1. 使用安全测试设置 authenticationConfig.xml
  2. 将安全测试添加到 application-descriptor.xml 中的 environment 节点
  3. 将 publicSigningKey 添加到<publicSigningKey>元素
  4. 添加应用程序包名称<packageName>元素

我相信您缺少第 4 步
。请注意,您现在还可以启用扩展真实性模式;按照教程中的说明进行操作。

关于第 3 步的注意事项:显然,当您导出已签名的 .apk 文件时,必须使用用于生成 publicSigningKey 的相同密钥库……否则会出现不匹配并且真实性质询将失败。


在您的 authenticationConfig.xml 中,确保您有可用的 securityTest(=没有像您在下面的评论中提供的文件中那样被注释掉。

在您的 application-descriptor.xml 中,您缺少 Android 环境元素中的 securityTest 属性:<android version="0.9.9">更改为<android version="0.9.9" securityTest="customTests">

于 2015-05-08T15:09:41.920 回答