如何保护RESTful WCF服务,以便只有调用应用程序可以调用它们?

时间:2009-12-15 21:14:04

标签: wcf wcf-security wcf-rest

我有一个使用Silverlight和ASP.NET作为前端的应用程序。它通过调用托管在那里的一些RESTful WCF服务从服务器检索数据。我想阻止好奇的用户打开一个新的浏览器窗口并自己调用Web服务。有没有办法限制对特定应用程序的Web服务的访问?

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用HTTPS来保护端点并要求身份验证。您可以在代码中嵌入一个令人讨厌的长密钥。不幸的是,System.Security.Cryptography不在SL安装中,因此在服务器上没有加密/解密客户端功能。并且没有理由用户不能仅仅使用反射器之类的东西来阅读代码。

SL可以“大多是安全的”,但绝对不安全。

答案 1 :(得分:0)

如果您真的对保护Web服务感兴趣,那么您应该考虑从RESTful服务迁移到基于SOAP的Web服务,并实现基于消息的加密的WS-Security标准。

然后,您可以保护您的服务,以便只有拥有适当安全信息(使用用户名/密码或X.509证书)的客户才能调用您的Web服务。

<强>更新

正如您所看到的......我已将X.509作为选项删除。我空了一下,忘记了Silverlight中的WS-Security限制。好消息是您可以基于Silverlight中的WS-Security标准实现用户名令牌:

Implementing Username Password & WS-Security with Silverlight

答案 2 :(得分:0)

这是模式和指南的指南。 WCF安全实践团队。那里有很多东西可以找到。

http://www.codeplex.com/WCFSecurityGuide

答案 3 :(得分:-1)

不,没有。