2009-09-30 77 views
0

我必须创建一个将敏感信息返回给客户端的WCF服务。我需要确保服务的安全性不容易受到影响。我将使用WCF的内置安全机制通过使用带证书安全性的wsHttpBinding来保护网络上的数据。如何防止我的WCF服务配置文件中的安全覆盖?

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

我想要做的是这样的:创建一个自定义服务主机,其中我重写了ApplyConfiguration函数。在ApplyConfiguration功能我可以做两件事情之一:

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

我是WCF的新手,所以如何正确地做到这一点的指导将不胜感激(代码示例,如果你可以:-))。我不知道我是否在正确的轨道上!

回答

1

好了,你有多种选择:

  • 你可以在自定义的ServiceHost检查某些安全设置,并确保他们acctivated
  • ,如果他们没有被激活,你可以要么只是关闭您的服务主机,或者你可以在代码中设置它们(重写无论是在配置文件中设置)

您也可以要求在正确使用的ProtectionLevel设置您的服务合同的某些安全设置:

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

这实际上是默认设置 - 所以你应该是安全的,但如果你想,你总是可以显式地指定保护级别(使它晶莹剔透,以你的意图是什么)。

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

Marc