【问题标题】:Worklight adapter calls are not encrypted (WL.Client.invokeProcedure)Worklight 适配器调用未加密 (WL.Client.invokeProcedure)
【发布时间】:2014-07-22 19:14:18
【问题描述】:
我正在使用 Worklight 适配器从 Web 服务获取数据。从客户端我正在做
WL.Client.invokeProcedure
服务器端有各自的代码。问题是这个客户端到服务器适配器的通信是通过纯文本进行的,很容易被嗅探。虽然我的网址是 HTTPS 但没用。请帮忙,我确信 IBM worklight 中应该有一种方法可以制作安全的应用程序。
谢谢
【问题讨论】:
标签:
security
https
ibm-mobilefirst
worklight-adapters
worklight-security
【解决方案1】:
AFAIK worklight 在您的移动应用程序和 wroklight 服务器之间仅提供两个安全选项。
正如您在问题中提到的,Worklight 提供 HTTPS 以确保安全。
您可以在WL.Client.invokeProcedure 中使用compressResponse 压缩数据
{
adapter : 'adapter-name',
procedure : 'procedure-name',
parameters : [],
compressResponse : true/false
}
compressResponse - 可选。请求服务器响应的字符串
以压缩格式发送以减少数据量
在 Worklight Server 和设备之间传输。默认
如果未指定 compressResponse,则 value 为 false。注意:这个
选项适用于 Android、iOS、Windows Phone 8、BlackBerry 10、
移动网络和 Adobe AIR。对于移动 Web 应用程序,压缩是
仅当设备浏览器可以解压 GZIP 数据时才支持。如果
有效载荷的大小大于 compress.response.threshold
在服务器上设置的属性,此选项被忽略
您始终可以使用 javascript AES 库加密/解密、适配器请求/响应。
您可以使用Stanford Javascript Crypto Library - SCJL 进行简单的加密和解密。我猜 SCJL 是随 Worklight 一起发布的。
SCJL 使用起来非常简单。你找到下面的代码来加密和解密。
sjcl.encrypt("password", "data");
sjcl.decrypt("password", "encrypted-data");