代码之家  ›  专栏  ›  技术社区  ›  Kevin Babcock

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

  •  2
  • Kevin Babcock  · 技术社区  · 15 年前

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

    谢谢!

    4 回复  |  直到 15 年前
        1
  •  -1
  •   blowdart    15 年前

    不,没有。

        2
  •  2
  •   Jarrett Meyer    15 年前

    您可以使用HTTPS来保护端点并要求进行身份验证。您可以在代码中嵌入一个非常长的密钥。不幸的是,system.security.cryptography不在sl安装中,因此没有在服务器上加密/在客户机上解密功能。用户也没有理由不使用类似于Reflector的东西来读取代码。

    SL可以被称为“基本安全”,但绝对不安全。

        3
  •  0
  •   Justin Niessner    15 年前

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

    然后,您可以保护您的服务,使只有具有正确安全信息(用户名/密码)的客户机 或X.509证书 )可以调用您的Web服务。

    更新

    如你所见……我已经删除了X.509作为一个选项。我犹豫了一会儿,忘记了Silverlight中的WS-Security限制。好消息是,您可以在Silverlight中基于WS-Security标准实现用户名令牌:

    Implementing Username Password & WS-Security with Silverlight

        4
  •  0
  •   Slavo    15 年前

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

    http://www.codeplex.com/WCFSecurityGuide