2010-03-29 57 views
0

我正在爲客戶開發服務。該服務將位於防火牆後面的內部網上,並擁有自己的數據庫。該服務將被位於DMZ上的另一個Web應用程序使用。現在,我的問題是,公司有一種嚴格的政策,不打開從DMZ到Intranet的任何端口。從DMZ訪問防火牆後的WCF服務

1)DMZ上的Web應用程序可以在不打開端口的情況下訪問Intranet上的WCF服務嗎? 2)如果不是,是否有任何參考體系結構描述打開一個端口可能會完成並仍然有一個安全的解決方案?也許與證書相結合,某種類型的應用程序等等。不需要任何其他應用程序來使用服務(至少現在不用),所以可以有一個限制消費者使用這個Web應用程序的配置。

問候 /瓦勒

回答

1

我不得不「細化」我以前的答案一點,通過刪除所有:)

因此,這裏的短,更好的版本吧。不是最好的,但它工作得很好。 爲了讓解釋更簡單,讓我們考慮你有一個服務和一個想要使用它的客戶端。

  1. 添加防火牆外部運行,並暴露2個服務的代理服務器應用程序:
    第一個是與原始服務(同一地址,綁定合約)
    第二個是一個雙工服務那作爲其回調上述相同的服務合同
  2. 添加防火牆內運行一個代理客戶端應用程序和使用代理服務器的第二服務,也可以在原有的服務
  3. 原來的客戶端會消耗代理服務器,而不是原服務

它是如何工作的:

  1. 代理客戶端連接到代理服務器,並註冊回調
  2. 代理客戶也連接到原有的服務
  3. 原來的客戶端連接到代理服務
  4. 代理服務器將所有來自服務的呼叫轉移到回叫(記得合同是相同的)
  5. 代理客戶端將所有從回調實施到原始服務的客戶端的呼叫(再次合同相同)
  6. 原始服務處理該呼叫並返回結果
  7. 回覆以相反的順序被轉回到原始客戶端

注意,原來的客戶端不知道它連接到代理服務器來代替原來的服務

另外一個需要注意的是,轉發發生在這是不是很漂亮的代碼。 .NET 4.0中的WCF具有路由支持,但我不確定您只能路由回調通道,而不是直接路由。

希望它有幫助, Gicanu