2009-09-30 81 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