2010-09-30 71 views
1

我在想如何验证Web服务只能由授权客户端软件访问。验证用于Web服务的客户端软件

现在我并不是说我只想让Web服务向授权用户开放,我只希望我的Web服务对客户开放,我认为它是可以接受的。

让我们来看一个用例。我有一个我提供的Web服务和连接到该Web服务的软件。在这种情况下,该服务是基于REST的。我不希望其他人创建客户端并访问我的Web服务,并且从我的服务中获利,因为此服务是一组非常特殊的数据,我需要保持唯一的授权客户端的安全。

其他地方的一些不正确的建议是确保用户有一个帐户。但是,这只会阻止未经授权的用户,它不会阻止某人创建客户端,并允许这些真正的用户使用别人的软件访问我的Web服务。

另一个建议是在软件中包含某些识别细节或客户端证书,但这对于某人来说很容易进行反向工程并获取这些细节,然后重复请求。

我不确定我想要做什么甚至可能,但我希望有人能证明我错了。

回答

2

没有什么能够完全阻止创建第三方软件,类似于模仿您现有的客户端软件,如果您放弃了您的软件。您可以通过混淆客户端的二进制代码的某些部分或虚拟化这些部分(例如VMProtect工具)来使这种“克隆”的任务变得更加复杂,但是,正如所说的那样,这会使工作变得更难但不完全不可能。您可能需要重新考虑有关客户端软件的业务策略。

实践表明,如果您的服务器端服务很流行,无论您做什么克隆都会出现。这很简单,因为你无法用你的客户端软件满足所有用户,并且如果出现大量不满意的用户,他们将开始创建更好的客户端软件。在这种情况下,您可以做的最好的事情是提供免费的客户端SDK和社区:这些步骤将使创建第三方客户端软件更加可控。