WCF Security 主要包括 "Transfer Security"、"Access Control"、"Auditing" 幾個部分。 算法
Transfer Security 主要包括三個方面: "消息完整性(Message Integrity)"、"消息機密性 (Message Confidentiality)" 和 "交互驗證(Mutual Authentication)"。安全
(1) Security Mode 服務器
WCF 提供了 5 種不一樣的安全方式來實現上述三個安全目標。 app
(2) Bindings and transfer security modeside
附: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
Message Security and Credentials
Access Control 又被稱之爲 "Authorization",和 "Authentication" 驗證客戶端身份的目的不一樣,它被用來控制用戶(組)的代碼訪問受權。好比說財務相關服務只能被 "會計部" 訪問,人事相關服務只能被 "人事部" 和 "董事會" 訪問,越權訪問會觸發 "權限異常"。簡單點說,"Authentication" 詢問 "你是誰?",而後 "Authorization" 會限制你該作什麼,不應作什麼。
Auditing 的做用是將 WCF 安全相關事件記錄到 "Windows 系統日誌" 中。