WCF Security 主要包括 "Transfer Security"、"access Control"、"Auditing" 幾個部分。
Transfer Security 主要包括三個方面: "消息完整性(Message Integrity)"、"消息機密性 (Message Confidentiality)" 和 "交互驗證(Mutual Authentication)"。
(1) Security Mode
WCF 提供了 5 種不同的安全方式來實現上述三個安全目標。
(2) Bindings and transfer security modes
附: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
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 系統日志" 中。
新聞熱點
疑難解答