0

应用服务器

  • AIX V7.1
  • 韦伯
  • 应用服务器 V8.5.5.4
  • Java SDK V7.0.8
  • MobileFirst 平台基础 6.3
  • DB2 V10.1 客户端

数据库服务器

  • AIX V7.1
  • DB2 V10.1

我们有一个 MobileFirst 应用程序,它是我们现有应用程序的移动前端。现有应用程序是一个提供 RESTful Web 服务的 WebSphere 应用程序。MobileFirst 应用程序通过 MobileFirst Adapter 与现有 WebSphere 应用程序连接。RESTful Web 服务 URL 是受保护的 URL,并且使用 LDAP 完成身份验证并创建 LTPA 令牌。LDAP 在 WebSphere 中通过 WAS 控制台进行配置。

我们的 MobileFirst 应用程序运行良好,并且可以连接并使用 RESTful Web 服务,但前提是 MobileFirst 应用程序在单独的 WebSphere 配置文件或单独的 WebSphere 服务器上运行。如果我们尝试将 MobileFirst 应用程序安装到与提供 RESTful Web 服务的现有 WebSphere 应用程序相同的 WebSphere 配置文件中,它会中断。移动设备成功通过 MobileFirst 进行身份验证,然后调用 Adapter 来调用 RESTful Web 服务调用。但是,来自移动设备的下一次适配器调用以 HTTP 401 错误结束,这是一个授权错误。

我推测在适配器使用我们现有的提供 Web 服务的 WebSphere 应用程序进行身份验证之后,这会以某种方式覆盖在移动设备和 MobileFirst 之间完成的身份验证。

我的问题如下。

  1. MobileFirst 应用程序和我们现有的提供 RESTful Web 服务的 WebSphere 应用程序是否可以在同一个 WebSphere 配置文件中运行并共享 LTPA 令牌,这样当移动设备向 MobileFirst 进行身份验证时,它也将被授权执行在相同的 WebSphere 配置文件。

  2. 是否建议在同一个 WebSphere 配置文件中运行这两个应用程序,或者它们应该在单独的配置文件或单独的服务器上运行。

成本是一个问题,因为我们不一定希望增加物理上独立的服务器来运行 MobileFirst 的额外运营成本。

从操作的角度来看,添加和维护多个 WAS 配置文件是一项额外的工作。

理想情况下,我们真的希望在同一个 WebSphere 配置文件中运行这两个应用程序。

这是 trace.log、SystemOut.log、SystemErr.log 和 firebug-console.html 的 Google Drive 链接(无需登录)

MobileFirst 跟踪日志

MobileFirst 应用程序使用“Preview as Common Resources”在浏览器中运行。使用实际的 Android 或 iOS 设备时,我得到了相同的结果。MobileFirst 应用程序 WAR 在与通过适配器访问的 Web 服务 WAR 相同的 WAS 概要文件中运行。当 MobileFirst 应用程序 WAR 在单独的 WAS 概要文件或单独的 WAS 服务器上运行时,同样的代码可以成功运行。

请指教。

4

1 回答 1

1

我已经自己解决了这个问题。这是我的团队从另一个团队继承的代码库。

发生的事情是移动设备正在启动与运行在 WebSphere 上的 MobileFirst 的连接,这会创建一个 JSESSIONID cookie 和一个 LTPA2Token cookie。然后调用了一个适配器,该适配器调用了对在同一 WebSphere 配置文件中运行的 Web 服务的 HTTP 调用。调用 Web 服务会创建新的 JSESSIONID 和 LTPA2Token cookie。这些新的 cookie 被返回到移动设备,移动设备上的 JavaScript 代码获取这些新的 cookie 值,然后覆盖 document.cookies,从而清除了原始 cookie。然后,当移动设备在后续调用中尝试与 MobileFirst 连接时,它的会话无效并最终收到 HTTP 401 错误,这是一个授权错误。所以我们将这个问题归咎于我们的应用程序的糟糕实现。

于 2015-07-09T15:53:47.270 回答