0

WCF 中的安全 Web 服务

背景

  • 我们想要创建一个安全的 WCF 服务,它可以对数据进行加密/解密。将被加密和解密的数据的性质需要尽可能高的安全级别。
  • 该服务的消费者将是我们网络中的应用程序。将是 asp.net 网站、其他 wcf 服务、控制台应用程序以及可能在 linux 上运行的基于 java 的应用程序
  • 消费者将在没有任何域成员身份的本地计算机帐户上运行。

我已经阅读了大量有关 wcf 安全性的内容,并且在很大程度上理解了这些概念。我正在寻找一种对其他有类似需求的人来说效果很好的参考架构。

问题

  1. 鉴于新的 wcf 服务不能依赖任何数据库等来存储凭据,并且也不能依赖消费者成为 Windows 域的成员,我应该使用什么身份验证方法。我应该能够在服务中正确识别消费者,因为功能会根据消费者的身份而略有变化。
  2. 我应该使用哪种类型的传输安全 - 传输/消息/混合?这些是否有性能考虑?
  3. 我还应该考虑什么?
4

1 回答 1

0
  1. 使用客户端证书进行身份验证。要识别客户,请使用带有自定义标头的消息合同。每个客户端都应该将一些唯一值放入标头中。
  2. 我建议在您的情况下使用传输安全性。使用消息安全性有两个主要缺点: 性能和对您更重要的 互操作性,正如您所说,您可能需要支持 Java 客户端。您说您已经阅读了很多关于 WCF 安全性的内容,但以防万一您错过了,这里有一篇关于传输和消息安全性的好文章。
  3. 注意您的服务绑定。考虑到可能的 Java 客户端,我建议使用 basicHttpBinding。

希望能帮助到你!

编辑: 标题值应该是私有的。只有您和您的客户应该知道它。这就像如果我知道您的 Gmail 密码,很快就会找到您的登录信息。如果您认为它不够安全,您可以跳过自定义标头并将每个客户端映射到一个 IP 或一组 IP。例如,IP 12.32.456.10 对应于客户端 A。然后您可以将此映射存储在自定义配置文件部分中,您可以对此部分进行加密,这样即使有权访问您的服务文件的人也无法获取映射。

如果有帮助,请不要忘记将答案标记为有用;)

于 2013-01-16T16:27:53.957 回答