生产环境中的 Worklight PushAdapter 问题
Posted
技术标签:
【中文标题】生产环境中的 Worklight PushAdapter 问题【英文标题】:Worklight PushAdapter issues on production environment 【发布时间】:2014-02-13 10:03:27 【问题描述】:Worklight PushAdapter 示例在开发环境(即 Worklight Studio)中运行良好,但在迁移到生产环境时会出现一些问题。
由于安全问题,后端应用程序无法调用推送过程。如果设置 securityTest="wl_unprotected"
,可能在生产中存在风险,还有其他解决方案吗?
在eventSource
的onPoll
函数中,如果调用其他适配器的过程,它也会在生产中引发安全问题,但在开发中可以正常工作。
例如
推送适配器:
WL.Server.createEventSource(
name: 'PushEventSource',
onDeviceSubscribe: 'deviceSubscribeFunc',
onDeviceUnsubscribe: 'deviceUnsubscribeFunc',
securityTest:'SingleStepAuthAdapter-securityTest',
poll:
interval: 120,
onPoll: 'getNotificationFromBackend'
);
function getNotificationFromBackend()
var notifications = WL.Server.invokeProcedure(
adapter : 'MessageAdapter',
procedure : 'getMessages',
parameters : []
);
WL.Logger.error("notifications: " + JSON.stringify(notifications));
...
Error Messages:
[14-2-13 9:11:45:382 CST] 0000003d ht.integration.js.javascriptIntegrationLibraryImplementation E notifications: "isSuccessful":false,"errors":["Runtime: The resource 'proc:MessageAdapter.getMessages' should only be accessed when authenticated in realm 'wl_antiXSRFRealm'."],"warnings":[],"info":[] [project XXX]
你能帮忙吗?提前致谢。
【问题讨论】:
【参考方案1】:适配器过程的默认安全测试包含 Anti-XSRF 保护,但此配置可以被以下任一方式覆盖:
a.实现您自己的身份验证领域。
b.禁用特定程序的身份验证要求。您可以通过添加 适配器 XML 文件中元素的 securityTest="wl_unprotected" 属性。
类似问题请参考以下帖子。
IBM Worklight 6.0.0.1 - Push notifications polling not working in Production environment
【讨论】:
【参考方案2】:Worklight 应允许将受企业防火墙保护的侦听端口号分配给推送适配器。如果存在这样的功能,那么只需在生产环境中配置防火墙以仅允许来自特定推送源的推送请求即可。
如果这样的功能不可用,那么推送适配器应该受到安全测试的保护。并且推送源在推送数据时应使用特殊的登录 ID 进行身份验证。这应该是可行的。
【讨论】:
以上是关于生产环境中的 Worklight PushAdapter 问题的主要内容,如果未能解决你的问题,请参考以下文章
将 cookie 附加到 WorkLight Adapter 响应标头
IBM Worklight 6.0.0.1 - 部署到生产服务器时无法初始化 Worklight Project