[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客户端凭证的支持
接下来我们来比较一下对应我们之前介绍的这些常用的系统定义绑定在采用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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构