2013-01-16 88 views
0

安全web服務在WCF建議WCF的安全架構

背景

  • 我們希望創建一個有確實數據的加密/解密安全WCF服務。將被加密和解密的數據的性質需要最高級別的安全性。
  • 此服務的消費者將成爲我們網絡中的應用程序。這將是asp.net網站,其他wcf服務,控制檯應用程序和可能運行在linux上的基於Java的應用程序
  • 消費者將在沒有任何域成員資格的本地計算機帳戶上運行。

我已經做了很多關於wcf安全的閱讀,並在很大程度上理解了這些概念。我正在尋找一種適用於其他類似需求的參考架構。

問題

  1. 我應該使用給予什麼身份驗證方法,新的WCF服務不能依賴於任何數據庫等來存儲憑據,也不能依靠消費者的是一個Windows域的成員。我應該能夠在服務中正確識別消費者,因爲功能會根據消費者是誰而略有變化。
  2. 我應該使用什麼類型的傳輸安全 - 傳輸/消息/混合?這些都有性能方面的考慮嗎?
  3. 我還應該考慮些什麼?

回答

0
  1. 進行身份驗證使用客戶端證書。用自定義標題標識客戶使用消息合約。每個客戶端都應該在頭文件中添加一些獨特的值。
  2. 我建議在你的情況下使用運輸安全。使用消息安全性有兩個主要缺點:性能和對您而言更重要的互操作性,正如您所說可能需要支持Java客戶機。你說你已經閱讀了很多關於WCF安全性的內容,但爲了防止你錯過了,這裏有一篇關於Transport and Message安全性的好文章。
  3. 注意你的服務綁定。我建議使用basicHttpBinding考慮可能的Java客戶端。

希望它有幫助!

編輯: 標題值應該是私人的。只有你和你的客戶應該知道它。就像我知道你的Gmail密碼一樣,找到你的登錄信息並不需要很長時間。 如果您認爲它不夠安全,您可能會跳過自定義標題並將每個客戶端映射到一個IP或一組IP。例如,IP 12.32.456.10對應於客戶端A.然後,您可以將此映射存儲在自定義配置文件部分中,並且可以對此部分進行加密,以便即使是訪問服務文件的人也無法獲取映射。

不要忘了標記答案,如果它是有幫助的;)

+0

是的,這有助於。謝謝。 – JUKP

+0

我有一個後續問題:如果我要使用客戶端證書進行身份驗證和自定義標頭來標識客戶端,我如何確保ClientA不會嘗試通過在標頭中將自己標識爲ClientB來模擬ClientB。這可能對我們有不好的影響。 – JUKP

+0

@JohnUKP我更新了我的答案,因爲評論的長度限制爲 –