[WCF安全係列]綁定、安全模式與客戶端憑證類型:總結篇
對於常用的幾種綁定類型,它們都支持怎樣的安全模式,以及針對各種安全模式可以采用怎樣的認證方式(通過客戶端憑證類型決定),這些都在前麵的一係列文章中進行了詳細的介紹。接下來我們通過表格的形式對不同類型的係統預定義對不同的安全模式進行一下總結。
下麵的表格表示係統預定義綁定對不同安全模式的支持(WSHttpBinding與WS2007HttpBinding具有相同的安全模式支持策略,這裏僅僅列出了WSHttpBinding)。
BasicHttpBinding | WSHttpBinding | WSDualHttpBinding | NetNamedPipeBinding | NetTcpBinding | NetMsmqBinding | |
None | Default | Yes | Yes | Yes | Yes | Yes |
Transport | Yes | Yes | No | Default | Default | Default |
Message | Yes | Default | Default | No | Yes | Yes |
Mixed | Yes | Yes | Yes | No | Yes | No |
Both | No | No | No | No | No | Yes |
TransportCredentialOnly | Yes | No | No | No | No | No |
針對這個表格,我們可以看出:
- 所有的綁定都可以不采用任何的安全傳輸機製,即支持None安全模式;
- BasicHttpBinding的默認模式為None,WS相關的綁定默認模式為Message,而局域網相關綁定的模式模式為Transport;
- 除了NetNamedPipeBinding,所有的綁定都支持Message安全模式;
- 對於所有支持Message模式的綁定,除了NetMsmqBinding都支持Mixed模式;
- 除了WSDualHttpBinding,所有的綁定都支持Transport模式;
- 隻有BasicHttpBinding支持TransportCredentialOnly模式;
- 隻有NetMsmqBinding支持Both安全模式。
接下來我們來比較一下對應我們之前介紹的這些常用的係統定義綁定在采用Transport安全模式下,對客戶端憑證類型集的支持有何不同。
BasicHttpBinding | WSHttpBinding | WSDualHttpBinding | NetNamedPipeBinding | NetTcpBinding | NetMsmqBinding | |
None | Default | Yes | - | No | Yes | No |
Basic | Yes | Yes | - | No | No | No |
Digest | Yes | Yes | - | No | No | No |
Windows | Yes | Default | - | Default | Default | Default |
Ntlm | Yes | Yes | - | No | No | No |
Certificate | Yes | Yes | - | No | Yes | No |
從下麵的表格反映的數據我們可以看出:
- 三種基於HTTP的綁定(不包括不支持Transport安全模式的WSDualHttpBinding)支持所有類型的客戶端憑證(實際上客戶端憑證類型都是通過枚舉HttpClientCredentialType表示);
- 除了BasicHttpBinding在默認的情況下None作為客戶端憑證類型(匿名客戶端)之外,其它綁定的默認客戶端憑證類型都是Windows;
-
NetTcpBinding支持三種客戶端憑證類型None、Windows和Certificate;
- NetNamedPipeBinding和NetMsmqBinding支持唯一的客戶端憑證類型Windows。
三、係統預定義綁定對不同Message客戶端憑證的支持
而不同的綁定針對於Message模式(或者Mixed模式)下的客戶端憑證類型的支持就非常清晰了。因為除了BasicHttpBinding采用BasicHttpMessageCredentialType枚舉表示其支持的客戶端憑證類型之外,其它所有的綁定(不包括不支持Message安全模式的NetNamedPipeBinding)都使用MessageCredentialType表示客戶端憑證類型,並且。在Message模式下,不同類型的綁定對不同客戶端憑證類型集的支持反映在下麵的表格中。
BasicHttpBinding | WSHttpBinding | WSDualHttpBinding | NetNamedPipeBinding | NetTcpBinding | NetMsmqBinding | |
None | No | Yes | Yes | - | Yes | Yes |
User Name | Default | Yes | Yes | - | Yes | Yes |
Windows | No | Default | Default | - | Default | Default |
Certificate | Yes | Yes | Yes | - | Yes | Yes |
IssuedToken | No | Yes | Yes | - | Yes | Yes |
作者:蔣金楠
微信公眾賬號:大內老A
微博:www.weibo.com/artech
如果你想及時得到個人撰寫文章以及著作的消息推送,或者想看看個人推薦的技術資料,可以掃描左邊二維碼(或者長按識別二維碼)關注個人公眾號(原來公眾帳號蔣金楠的自媒體將會停用)。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出原文連接,否則保留追究法律責任的權利。
微信公眾賬號:大內老A
微博:www.weibo.com/artech
如果你想及時得到個人撰寫文章以及著作的消息推送,或者想看看個人推薦的技術資料,可以掃描左邊二維碼(或者長按識別二維碼)關注個人公眾號(原來公眾帳號蔣金楠的自媒體將會停用)。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出原文連接,否則保留追究法律責任的權利。
最後更新:2017-10-27 10:33:46