WCF安全3-Transport与Message安全模式

概述:

WCF的安全传输主要涉及认证、消息一致性和机密性三个主题。WCF采用两种不同的机制来解决这三个涉及传输安全的问题,一般将它们成为不同的安全模式,即Transport安全模式和Message安全模式。

一、Transport安全模式

Transport安全模式利用基于传输层协议的安全机制解决传输安全涉及的三个问题(认证、消息一致性和机密性)。

TLS/SSL是实现Transport安全最常用的方式

1.TLS、SSL、HTTPS

(1)SSL->SSL1.0->SSL2.0->SSL3.0->TLS1.0

(2)TLS/SSL本身和具体的网络传输协议无关,既可以用于HTTP,也可以用于TCP。

(3)HTTPS将HTTP和TLS/SSL两者结合起来。对于WCF来说,所有基于HTTP协议的绑定采用的Transport安全都是通过HTTPS来实现的。

(4)NetTcpBinding也提供了对TLS/SSL的支持,一般将TLS/SSL在TCP上的应用称为SSL Over TCP。

2.TLS/SSL解决的问题:

  • 客户端对服务端的验证;
  • 通过对传输层传输的数据段(Segment)进行加密确保信息的机密性

3.TLS/SSL采用的协议是对称加密

客户端和服务端具有一个只有他们批次知晓的会话密钥,所有的请求和回复消息均通过该会话密钥进行加密和解密

选择对称加密的原因:

(1)对称加密/解密比非对称加密/解密需要更少的计算,所以具有更好的性能;

(2)在客户端不提供自身证书的情况下,非对称的加密方式只能确保客户端向服务端请求消息的机密性,而不能保证服务端向客户端回复消息的机密性。

2.Tansport安全模式的优缺点

优点:高性能,虽然TLS/SSL在正式进行消息交换之前需要通过协商建立一个安全的连接,但是这个协商过程完全通过传输层协议来完成,而且可以利用网络适配器的硬件加速。

缺点:

1.依赖于具体的传输协议

2.只能提供点对点的安全传输保障,即客户端直接连接服务器的场景。如果在客户端与服务端的网络需要一些用于消息路由的中间节点,Tansport安全模式则没有了用武之地。

3.在传输层(而不是应用层)解决对客户端的认证。这就决定了可供选择的认证方式(或者说可以采用的凭证)比较少。

二、Message安全模式

1.遵循了4个规范


WS-Security


提供了一个抽象的消息安全模型。在这个安全模型中,通过安全令牌,结合数字签名和加密技术实现对消息交换实体的认证和对消息本身的保护。


WS-Trust


双向验证


WS-Secure Conversation


建立在WS-Security和WS-Trust基础之上,旨在提供一种机制,实现对安全上下文的创建和对整个生命周期的控制


WS-Security Policy


建立在WS-Policy基础上,定义了一系列关于安全传输的策略断言。这些策略断言最终应用在WS-Security、WS-Trust、和WS-SC中。

2.安全模式的优缺点

优点:

(1)较之Transport安全,这种基于应用层实现的安全机制在认证方式上具有更多的选择

(2)能够提供端到端的安全

(3)互操作性,跨平台

缺点:

(1)性能较之Transport差

三、混合安全模式

(1)消息的一致性、机密性和客户端对服务端的认证通过Transport安全模式来实现;

(2)采用Message安全模式实现服务端对客户端的认证;

(3)充分利用Transport安全模式硬件加速优势,以提供高性能和具有高吞吐量的服务;

(4)更多关于客户端安全凭证和认证方式的选择;

(5)只能提供点到点的安全。

时间: 2024-10-12 14:02:00

WCF安全3-Transport与Message安全模式的相关文章

WCF wsHttpBinding之Transport security Mode, clientCredentialType=”Basic”

原创地址:http://www.cnblogs.com/jfzhu/p/4071342.html 转载请注明出处 如何在WCF中使用Transport Security Mode,以及如何创建证书,请参见<WCF basicHttpBinding之Transport Security Mode, clientCredentialType="None">,本文介绍如何使用Basic clientCredentialType. server web.config <?xm

WCF basicHttpBinding之Transport Security Mode, clientCredentialType=&quot;None&quot;

原创地址:http://www.cnblogs.com/jfzhu/p/4071342.html 转载请注明出处 前面文章介绍了<WCF basicHttpBinding之Message Security Mode>如何basicHttpBinding的Message Security Mode,并且clientCredentialType用的是certificate. 本文演示basicHttpbinding使用Transport Security Mode,并且clientCredenti

WCF SSL(应用篇-Message)-02

1.Host 配置信息Message 安全模式配置 <bindings> <wsHttpBinding> <binding name="MessageAndUserName" > <!--安全模式 为 Message --> <security mode="Message"> <transport clientCredentialType="None"/> <!--客户

WCF basicHttpBinding之Message Security Mode

原创地址:http://www.cnblogs.com/jfzhu/p/4067873.html 转载请注明出处 前面的文章<WCF Security基本概念>介绍了WCF的security mode,简单说Transport是transport级别上的加密,Message是message级别上的加密,参见下图: Transport Security Message Security (一)Demo代码 IDemoService.cs: using System.ServiceModel; n

WCF 内置绑定在不同的传输安全模式下的信道层

basicHttpBinding Transport安全模式信道层 Message安全模式信道层 TransportWithMessageCredential安全模式信道层 TransportCredentialOnly安全模式信道层 webHttpBinding Transport安全模式信道层 TransportCredentialOnly安全模式信道层 wsHttpBinding/ws2007HttpBinding Message安全模式信道层 Transport安全模式信道层 Trans

WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化

在本篇文章中,我们将讨论WCF四大契约(服务契约.数据契约.消息契约和错误契约)之一的消息契约(Message Contract).服务契约关注于对服务操作的描述,数据契约关注于对于数据结构和格式的描述,而消息契约关注的是类型成员与消息元素的匹配关系. 我们知道只有可序列化的对象才能通过服务调用在客户端和服务端之间进行传递.到目前为止,我们知道的可序列化类型有两种:一种是应用了System.SerializableAttribute特性或者实现了System.Runtime.Serializat

WCF初探-22:WCF中使用Message类(上)

前言 从我们学习WCF以来,就一直强调WCF是基于消息的通信机制.但是由于WCF给我们做了高级封装,以至于我们在使用WCF的时候很少了解到消息的内部机制.由于WCF的架构的可扩展性,针对一些特殊情况,WCF为我们提供了Message类来深度定制消息结构,以便我们拓展WCF的通信机制. 在之前的文章中,我们针对一些常用的WCF传递数据的方式进行了说明,比如数据协定和消息协定等.他们传递的数据最终都会转化为消息的实例.具体参照:        WCF初探-16:WCF数据协定之基础知识       

WCF Security基本概念(转载)

WCF Security 主要包括 "Transfer Security"."Access Control"."Auditing" 几个部分. 1. Transfer Security Transfer Security 主要包括三个方面: "消息完整性(Message Integrity)"."消息机密性 (Message Confidentiality)" 和 "交互验证(Mutual Aut

WCF Security(转载)

WCF Security 主要包括 "Transfer Security"."Access Control"."Auditing" 几个部分. 1. Transfer Security Transfer Security 主要包括三个方面: "消息完整性(Message Integrity)"."消息机密性 (Message Confidentiality)" 和 "交互验证(Mutual Aut