0

我必须创建一个向客户端返回敏感信息的 WCF 服务。我需要确保服务的安全性不会轻易受到损害。我将使用 WCF 的内置安全机制通过使用具有证书安全性的 wsHttpBinding 来保护线路上的数据。

但是,我还想通过修改配置文件来确保服务的安全性不会受到损害。我想保留配置文件在端口、基地址等方面提供的所有灵活性,但忽略任何可能危及服务的端点/绑定相关配置部分。

我想做的是:创建一个自定义服务主机,在其中我覆盖 ApplyConfiguration 函数。在 ApplyConfiguration 函数中,我可以做以下两件事之一:

  1. 使用 base.LoadConfigurationSection 仅加载我需要的配置文件中的部分。
  2. 使用 base.ApplyConfiguration 加载整个配置文件并删除所有可能危及安全的端点。

我是 WCF 的新手,因此任何有关如何正确执行此操作的指导都将不胜感激(如果可以的话,请提供代码示例 :-))。我不知道我是否在正确的轨道上!

4

1 回答 1

1

好吧,您有多种选择:

  • 您可以检查自定义 ServiceHost 中的某些安全设置并确保它们已激活
  • 如果它们没有被激活,你可以关闭你的服务主机,或者你可以在代码中设置它们(覆盖配置文件中设置的任何内容)

您还可以使用 ProtectionLevel 设置在服务合同中要求某些安全设置:

[ServiceContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)]
interface IYourService
{
....
}

这实际上是默认设置 - 所以您应该是安全的,但如果您愿意,您始终可以明确指定保护级别(以明确您的意图是什么)。

这样,任何试图向您发送未加密或未签名的消息的人都将被彻底拒绝。

马克

于 2009-09-30T07:31:16.157 回答