安全Web服务(WCF),无需在消费者应用程序上存储凭据

时间:2010-03-25 05:05:05

标签: c# security authentication web-services authorization

我有一个销售彩票分析应用程序的客户。在这个应用程序中,他使用网络服务(我的服务,我的意思是,属于我现在工作的公司)来获取有关全球各地的彩票结果,投注,金额等的统计数据。支付对此Web服务的访问权限,每次咨询都需要支付X个学分。

有些人已经拆解了这个彩票应用程序,发现用于访问付费网络服务的api key / auth密钥,并开始使用它。

我想阻止这种情况再次发生,但我无法在不存储身份验证的情况下找到在Web服务上进行身份验证的方法。应用程序上的键。有没有人对如何完成这项任务有任何想法?

ps1.Can要求用户输入任何类型的凭据。必须对他们透明(他们不应该知道发生了什么)。

PS2。由于上述相同的原因,不能使用数字证书,更不用说它很容易检索它们,我们会陷入原始问题。

提前致谢。

2 个答案:

答案 0 :(得分:1)

简而言之,你不能有效地做到这一点。你遇到了与视频游戏公司类似的问题。

您可能会使用某种形式的“代码混淆”,但这是一种通过默默无闻的安全形式,您无法保证其有效性。

您可以通过为每个客户端使用不同的密钥来减少暴露,并且在服务器端,确保不同客户端同时使用密钥。这基本上是视频游戏行业所带来的真正好处。

答案 1 :(得分:0)

无法做到。

您必须将凭据嵌入应用程序(硬编码或其他)或提示用户输入。

将Web服务锁定到单个应用程序也是无效的,因为它可以很容易地被发现和绕过,就像嵌入凭证一样。

由于你无法控制客户端或环境(限制通过IP,域等进行访问),恕我直言,你很尴尬:(