对于常用的几种绑定类型,它们都支持怎样的安全模式,以及针对各种安全模式可以采用怎样的认证方式(通过客户端凭证类型决定),这些都在前面的一系列文章中进行了详细的介绍。接下来我们通过表格的形式对不同类型的系统预定义对不同的安全模式进行一下总结。
一、系统预定义绑定对不同安全模式的支持
下面的表格表示系统预定义绑定对不同安全模式的支持(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 |