WCF安全 - WCF教程

一个强大的WCF服务安全系统,拥有两种安全模式或级别预期的客户端可以访问的服务。这是常见的分布式事务的安全威胁正在放缓,在很大程度上由WCF决定。

关键的安全功能

WCF服务有四个主要的安全功能,如下图所示。

Wcf Security

传输安全模式

WCF提供以下传输安全模式,以确保在客户机和服务器之间的安全通信。多样传输安全模式如下所述。

<wsHttpBinding>
   <binding name="WCFSecurityExample">
      <security mode="None"/>
   </binding>
</wsHttpBinding>
<wsHttpBinding>
   <binding name="WCFSecurityExample">
      <security mode="Transport"/>
   </binding>
</wsHttpBinding>

<wsHttpBinding>
   <binding name="WCFSecurityExample">
      <security mode="Message"/>
   </binding>
</wsHttpBinding>

<wsHttpBinding>
   <binding name="WCFSecurityExample">
      <security mode="TransportWithMessageCredential"/>
   </binding>
</wsHttpBinding>

<netMsmqBinding>
   <binding name="WCFSecurityExample">
      <security mode="Both"/>
   </binding>
</netMsmqBinding>

所有的WCF绑定,除非有basicHttpBinding传输安全性默认情况下有一定关系。

消息安全级别

消息级安全性不依赖于WCF协议。它是通过使用一个标准的算法对数据进行加密采用与消息数据本身。有若干客户端凭证可用于不同的绑定的消息的安全级别,这些将在下面讨论。

WCF消息级安全性的客户端证书

None :在此,使用加密来保护该消息而被执行,这意味着,该服务可以由一个匿名客户访问没有客户机认证。除了basicHttpBinding,所有的WCF绑定支持此客户端凭据。然而,应当注意的是,对于NetNamedPipeBinding客户端凭证不可用。

下面的代码显示了客户端凭据如何配置WCF的信息安全等级/模式。

<netTcpBinding>
   <binding name="WCFMessageSecurityExample">
      <security mode="Message">
         <message clientCredentialType="None"/>
      </security>   
   </binding>
</netTcpBinding>

<netMsmqBinding>...</netMsmqBinding>
</bindings>
<behaviors>...</behaviors>

这里,必须指出的是,传输安全模式具有超过该消息的安全级别的边缘,因为前者是更快。它不需要任何额外的编码,并提供互操作性的支持,并且因此不会降低整体性能。

然而,从安全角度考虑,将消息安全模式是更加健壮,并且独立的协议,并提供端到端的安全性。