如何防止WCF服务配置文件中的安全覆盖?

时间:2009-09-30 06:56:13

标签: wcf security config overrides

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

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

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

  1. 仅使用base.LoadConfigurationSection加载配置文件中我需要的部分。
  2. 使用base.ApplyConfiguration加载整个配置文件,并删除可能危及安全性的所有端点。
  3. 我是WCF的新手,所以任何有关如何正确执行此操作的指导都将受到赞赏(如果您可以使用代码示例:-))。我不知道我是否走在正确的轨道上!

1 个答案:

答案 0 :(得分:1)

嗯,你有多种选择:

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

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

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

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

有了这个,任何试图向您发送未加密或未签名的邮件的人都将被拒绝。

马克