应用程序启动时与 Worklight 相关的错误消息

Posted

技术标签:

【中文标题】应用程序启动时与 Worklight 相关的错误消息【英文标题】:Worklight-related error message on application launch 【发布时间】:2014-09-27 10:22:33 【问题描述】:

我从 Worklight 收到以下错误消息。 应用程序今天应该会上线,而这个错误会阻止它。

在 initOptions.js connecyOnStartUp : false 但我手动调用 WL.Client.connect。 我怀疑它与推送通知注册有关。实际上,我正在使用 PERSISTENT_COOKIE 作为用户 ID 将匿名用户注册到匿名推送事件源。 这发生在我客户的设备上,但不是在我的设备上。


这是我的安全领域定义:

    <customSecurityTest name="LmsrSecurityTest">
            <test isInternalUserID="true" realm="LmsrAuthRealm" step="1"/>
            <test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID="true" step="2"/>
            <test realm="wl_antiXSRFRealm"/>
<!--            <test realm="wl_authenticityRealm"/> -->
            <test realm="wl_remoteDisableRealm"/>
        </customSecurityTest>  
        <!-- Anoymous users notifications -->       
        <mobileSecurityTest name="notLoggedInTest">
            <testAppAuthenticity/> 
            <testDeviceId provisioningType="none" />
            <testUser realm="wl_anonymousUserRealm" />

更新:这是我的应用程序描述符

<iphone bundleId="<my-bundle-id>" version="1.0.1">
        <worklightSettings include="false"/>
        <pushSender password="XXXXX"/>
        <security>
            <encryptWebResources enabled="false"/>
            <testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
        </security>
    </iphone>
    <android version="1.0.1">
        <worklightSettings include="false"/>
        <pushSender key="XXXXXX" senderId="XXXXX"/>
        <security>
            <encryptWebResources enabled="false"/>
            <testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
            <publicSigningKey>my-very-long-public-signing-key</publicSigningKey>
        </security>
    </android>

这是发生时的日志服务器端:

[9/27/14 18:42:46:893 GST] 0000057b com.ibm.ws.webcontainer.util.ApplicationErrorUtils E SRVE0777E: 应用程序类抛出异常 'com.worklight.core.auth.impl.AuthenticationContext.pushCurrentResource:398' com.worklight.server.auth.api.WorkLightAuthenticationException 在 com.worklight.core.auth.impl.AuthenticationContext.pushCurrentResource(AuthenticationContext.java:398) 在 com.worklight.core.auth.impl.AuthenticationServiceBean.accessResource(AuthenticationServiceBean.java:75) 在 com.worklight.integration.services.impl.DataAccessServiceImpl.subscribeNotifications(DataAccessServiceImpl.java:166) 在 com.worklight.gadgets.serving.handler.NotificationSubscriptionHandler.doPost(NotificationSubscriptionHandler.java:100) 在 com.worklight.gadgets.serving.GadgetAPIServlet.doGetOrPost(GadgetAPIServlet.java:141) 在 com.worklight.gadgets.serving.GadgetAPIServlet.doPost(GadgetAPIServlet.java:103) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:595) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1240) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:760) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443) 在 com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:127) 在 com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:88) 在 com.worklight.core.auth.impl.AuthenticationFilter$1.execute(AuthenticationFilter.java:191) 在 com.worklight.core.auth.impl.AuthenticationServiceBean.accessResource(AuthenticationServiceBean.java:76) 在 com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:195) 在 com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194) 在 com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85) 在 com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:949) 在 com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1029) 在 com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:78) 在 com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:885) 在 com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:252) 在 com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:584) 在 com.ibm.ws.threading.internal.Worker.executeWork(Worker.java:439) 在 com.ibm.ws.threading.internal.Worker.run(Worker.java:421) 在 java.lang.Thread.run(未知来源)

[9/27/14 18:42:47:137 GST] 0000057b com.worklight.core.auth.ext.AuthenticityLoginModule E FWLSE0127E: 真实性检查失败。 [法尔项目]

【问题讨论】:

这与推送通知无关...是否已在设备上安装了应用程序并且客户已升级到ios8?您需要确保为所有工作灯版本使用最新的 iFix。 此错误与 App Authenticity 和/或 Web 资源校验和测试有关。 我已经在使用 2014 年 9 月的版本 6.1.0.2。 我可以做些什么来调试/修复它吗? 它也发生在 android 上! 【参考方案1】:

从服务器日志判断,此错误与推送通知无关。 服务器日志提到应用程序真实性质询失败:

[9/27/14 18:42:47:137 GST] 0000057b com.worklight.core.auth.ext.AuthenticityLoginModule E FWLSE0127E: Authenticity check failed. [project Fahr]

要进行验证,您可以禁用从 Worklight Console 对 iPhone 或 Android 环境进行的真实性检查。

如果应用程序随后成功连接到 Worklight Server,您需要仔细检查您的设置方式。

阅读 Application Authenticity Protection training module 和 the user documentation topic(为您的 Worklight 版本选择正确的主题)。

可能的原因可能是错误的bundleId/applicationId/public 签名密钥(取决于 Worklight 版本和受影响的环境)。

请注意,任何配置更改都需要将 .war 文件重新部署到应用程序服务器,以及将 .wlapp 重新部署到服务器以及将应用程序重新部署到设备/App Store。

【讨论】:

事实上,真实性选择框在 Worklight 控制台中被禁用。因为我不希望它在那里。我从应用程序描述符中禁用了它。请告知我的配置是否有问题。应用程序第一次使用 WL.Client.connect 成功连接 你看我的回答了吗?日志说存在真实性错误。所以仔细检查你的设置,确保它被禁用并重新部署战争和 WLAPP 和应用程序。这是我唯一的建议。我无能为力。 好的,谢谢 Idan,我只是想从配置点检查一下我什么都没有 您的配置看起来不错,但是即使您说您禁用了它,如果它在真实性上失败,也会丢失一些东西,这就是为什么我建议仔细检查设置并部署所需的资源。跨度> 如果我正在为 iOS 进行 ADhoc 部署,它有什么影响吗?因为我读到 ios 的 bundle id 应该是一样的

以上是关于应用程序启动时与 Worklight 相关的错误消息的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 Worklight 服务器应用中心

Worklight Direct Update 继续执行

Worklight 应用程序 ClassNotFoundException

Worklight CLI 未在 mac 中启动 Giving Error

Worklight 6.0 WL 开发服务器未启动

动态朗。运行时与反射