我有一个使用 Silverlight 和 ASP.NET 作为前端的应用程序。它通过调用托管在那里的一些 RESTful WCF 服务从服务器检索数据。我想阻止好奇的用户打开一个新的浏览器窗口并自己调用网络服务。有没有办法限制对特定应用程序的 Web 服务的访问?
谢谢!
我有一个使用 Silverlight 和 ASP.NET 作为前端的应用程序。它通过调用托管在那里的一些 RESTful WCF 服务从服务器检索数据。我想阻止好奇的用户打开一个新的浏览器窗口并自己调用网络服务。有没有办法限制对特定应用程序的 Web 服务的访问?
谢谢!
您可以使用 HTTPS 来保护端点并要求身份验证。您可以在代码中嵌入一个令人讨厌的长密钥。不幸的是,System.Security.Cryptography 不在 SL 安装中,因此在服务器上没有加密/在客户端功能上没有解密。无论如何,用户没有理由不能只使用反射器之类的东西来读取代码。
SL 可以“主要安全”,但绝对不安全。
如果您真的对保护您的 Web 服务感兴趣,您应该考虑从 RESTful 服务迁移到基于 SOAP 的 Web 服务,并为基于消息的加密实现 WS-Security 标准。
然后,您可以保护您的服务,以便只有具有正确安全信息(在用户名/密码或 X.509 证书中)的客户端才能调用您的 Web 服务。
更新
如您所见...我已将 X.509 作为选项删除。我愣了片刻,忘记了 Silverlight 中的 WS-Security 限制。好消息是您可以在 Silverlight 中实现基于 WS-Security 标准的用户名令牌:
这是 WCF 安全模式和实践团队的指南。那里有很多东西可以找到。
不,没有。