如何从客户端隐藏工作灯适配器过程,但对服务器可见?

Posted

技术标签:

【中文标题】如何从客户端隐藏工作灯适配器过程,但对服务器可见?【英文标题】:How do I hide worklight adapter procedures from client, but visible to the server? 【发布时间】:2014-07-16 12:47:09 【问题描述】:

我有一个 SQL Worklight 适配器,其中的过程不应暴露给除我的 http Worklight 适配器之外的任何东西。我不能在 http 适配器中将这些过程作为私有函数,因为您不能在同一个适配器中混合 SQL 调用和 HTTP 调用。

我考虑过定义一个安全测试,只让来自服务器的调用使用它,有没有安全的方法来做到这一点?我应该使用其他方法吗?

我使用 Worklight 6.2.0 CLI 版本。

【问题讨论】:

【参考方案1】:

您可以使用“穷人”的安全方法,将所有数据库适配器编码为采用额外参数,要求该参数采用只有服务器才能提供的某个值。

使用安全测试肯定可以工作,我只是不确定它会做多少工作。据我所知,您无法在服务器上安装 ChallengeHandler,因此无法使用教程中的简单身份验证模式。所以我认为你会喜欢编写自己的 Realm。

我的问题是这样做是否有真正的价值。假设您只是用相同的安全测试保护了所有适配器过程(这更容易,因为标准 ChallengeHandler 模式可以工作,因为过程客户端位于 WL.CLient 空间中)。现在只有授权使用 HTTP 适配器的客户端才能使用 SQL 适配器。他们通过直接访问 SQL 适配器获得了哪些额外的特权?如果您在 HTTP 适配器中进行一些额外的安全检查,则可能需要将其重构为安全层或一些常用功能。

【讨论】:

感谢您的回答。暴露 SQL 适配器的问题在于它们用于获取任何客户端都不能使用的解密密钥。 HTTP 适配器使用此密钥解密凭据以发送到后端服务。 明白。在这种情况下,我的两个建议中的任何一个都会起作用。这里重要的是会有一些“秘密”,密码或密钥或证书或一些只有服务器拥有的,您需要使用操作系统级别的控制来保护它们。

以上是关于如何从客户端隐藏工作灯适配器过程,但对服务器可见?的主要内容,如果未能解决你的问题,请参考以下文章

如何在列表视图项中显示和隐藏视图?

IBM Worklight - 无法从客户端应用程序调用适配器过程

如何在使用照片框架从照片中选择图像时在选择器中隐藏 iCloud 图像

如何从适配器知道 ListView 的项目是不是可见?

技术顾问认知

MobileFirst 加密/解密用户凭证