WCF Security基本概念(轉載)

WCF Security 主要包括 "Transfer Security"、"Access Control"、"Auditing" 幾個部分。 算法

1. Transfer Security

Transfer Security 主要包括三個方面: "消息完整性(Message Integrity)"、"消息機密性 (Message Confidentiality)" 和 "交互驗證(Mutual Authentication)"。安全

  • 消息完整性必須確保消息在傳輸過程當中沒有被篡改,接收的消息是完整且正確的;
  • 消息機密性必須確保消息不會被任何第三方查閱,消息內容不會泄漏給任何非相關人員;
  • 交互認證則是指客戶端和服務器必須經過某種信任機制才能創建正確的鏈接,同時交互認證還要監測並阻止拒絕服務攻擊(DOS)。一般的作法是對消息進行數字簽名來確保其完整性,使用非對稱加密算法來阻止消息內容外泄,而用戶名/密碼、X.509 數字證書等方式則能夠用來驗證對方身份。

(1) Security Mode 服務器

WCF 提供了 5 種不一樣的安全方式來實現上述三個安全目標。 app

  • None: 不採起任何安全措施,僅適合在內部安全環境使用。
  • Transport: 在傳輸協議級別上對通道的全部通信進行加密,可以使用的通信協議包括 HTTPS、TCP、IPC 和 MSMQ。優勢是應用普遍,多平臺支持,實施方便簡單,效率極高,適合高吞吐量的服務使用;缺點是隻能實現點對點(point-to-point)的消息安全,在使用中介鏈接(Proxy)時可能會泄漏消息內容,比較適用於於 Intranet 或直接鏈接的環境。
  • Message: 經過相關標準(如 WS-Security)直接對消息進行加密來達到安全目的。優勢是能實現端到端(end-to-end)的安全傳輸,不存在中介安全隱患,且擴展性較好。因採起工業安全標準,因此整合能力更強,適用於 Internet 服務。缺點是比 Transport 效率要低一些。
  • Mixed(TransportWithMessageCredential): 混合了上面兩種方式。使用 Transport 方式完成消息完整性、消息機密性以及服務器認證,而使用 Message 方式完成客戶端認證。
  • Both: 使用 Transport 和 Message 共同完成全部的安全過程,比較恐怖,性能低下,只有 NetMsmqBinding 支持這一安全方式。

(2) Bindings and transfer security modeside

1

附:NetTcpBinding、NetNamedPipeBinding 和 NetMsmqBinding 缺省使用 Transport 安全方式,緣由是由於它們多用於 Intranet 環境下,相對比較安全。另外 Transport 方式擁有較好的性能,也很是適合內部高性能服務系統使用。BasicHttpBinding 缺省採起 None 方式是爲了兼容 ASMX。 性能

咱們能夠經過編碼或者配置文件的方式來指定 Binding 的安全方式。編碼

NetTcpBinding binding = new NetTcpBinding(); 
binding.Security.Mode = SecurityMode.Message;

 

app.config加密

<bindings> 
  <netTcpBinding> 
    <binding name = "NewBinding0"> 
      <security mode = "Message" /> 
    </binding> 
  </netTcpBinding> 
< /bindings>

 

(3) Credentials spa

Security Mode 解決了消息的完整性和機密性,那麼剩下來的就是 "Authentication" 了。WCF 支持多種認證方式,容許咱們從多個 "客戶端驗證類型(Client Credentials Types)" 中選擇適合咱們需求的方案,好比經典的 "用戶名/密碼",或者 "Windows 集成身份認證(NTLM 或 Kerberos)"、"X.509 數字證書" 等。下面兩張表展現了不一樣的綁定類型在不一樣安全模式下對驗證方式的支持狀況。 日誌

Transport Security and Credentials

2

 

Message Security and Credentials

3

 

2. Access Control

Access Control 又被稱之爲 "Authorization",和 "Authentication" 驗證客戶端身份的目的不一樣,它被用來控制用戶(組)的代碼訪問受權。好比說財務相關服務只能被 "會計部" 訪問,人事相關服務只能被 "人事部" 和 "董事會" 訪問,越權訪問會觸發 "權限異常"。簡單點說,"Authentication" 詢問 "你是誰?",而後 "Authorization" 會限制你該作什麼,不應作什麼。

3. Auditing

Auditing 的做用是將 WCF 安全相關事件記錄到 "Windows 系統日誌" 中。

相關文章
相關標籤/搜索