WCF学习笔记之传输安全
WCF学习笔记之传输安全
最近学习[WCF全面解析]下册的知识,针对传输安全的内容做一个简单的记录,这边只是简单的记录一些要点;本文的内容均来自[WCF全面解析]下册;
WCF的传输安全主要涉及认证、消息一致性和机密性三个主题;认证是双向认证(服务端与客户端互认证);一致性传输内容不被篡改;机密性不被乱读取;
三个安全行为:认证、授权、审核
WCF两种安全模式:Transport安全模式、Message安全模式
(1)Transport安全模式
优点:比Message高性能 局限:依赖具体的传输协议,只能提供基于点对点,不得不在传输层解决客户端的认证; Intranet是Transport安全模式的主要应用环境;
(2)Message安全模式
优点:与传输协议无关的,能够提供端到端安全传输保障的、并且有多种认证解决方案的安全模式,Message安全具有很好的互操作性或平台无关性;
(3)混合安全模式(Mixed模式)
对于混合安全模式,消息的一致性、机密性和客户端对服务的认证通过Transport安全模式来实现,而采用Message安全模式实现服务端对客户端的认证;
由于Transport安全模式不可回避的局限性,混合安全模式也只能提供点到点的安全。
一:认证 (客户端用户凭证类型体现的服务端针对客户端的不同认证方式)
配置实例[P327] 编码实例[P326]:

<bindings>
<netTcpBinding>
<binding name="transportTcpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</netTcpBinding>
</bindings>
<services>
<service name="Artech.WcfServices.Service.CalculatorService" behaviorConfiguration="serviceCertificateBehavior">
<endpoint address="net.tcp://Jinnan-PC/calculatorservice" binding="netTcpBinding" bindingConfiguration="transportTcpBinding" contract="Artech.WcfServices.Service.Interface.ICalculator" />
</service>
</services>

系统预定义绑定对不同安全模式的支持
系统预定义绑定对不同Transport客户端凭证的支持
系统预定义绑定对不同Message客户端凭证的支持
二:服务认证
配置实例[P337]编码实例[P337]

<services>
<service name="Artech.WcfServices.Service.CalculatorService"
behaviorConfiguration="serviceCertificateBehavior">
<endpoint address="net.tcp://Jinnan-PC/calculatorservice"
binding="netTcpBinding"
bindingConfiguration="transportTcpBinding"
contract="Artech.WcfServices.Service.Interface.ICalculator" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="serviceCertificateBehavior">
<serviceCredentials>
<serviceCertificate storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName"
findValue="Jinnan-PC" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>

三:消息保护[P366]
消息保护级别(System.Net.Security.ProtectionLevel):
1:None:不采用任何措施来保护消息的一致性和机密性
2:Sign:通过对整个消息或消息的某个部分进行数字签名以确保消息的一致性
3:EncryptAndSing:通过对整个消息或消息的某个部分同时进行答名和加密确保消息的一致性和机密性
定义:可在契约上进行设定

[ServiceContract]
public interface ICalculator
{
[OperationContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)]
double Add(double x, double y);
}

也可以在宿主进行配置:

<configuration>
<system.serviceModel>
<bindings>
<ws2007HttpBinding>
<binding name="bindingWithNoneSecurityMode">
<security mode="None">
</binding>
</ws2007HttpBinding>
</bindings>
<services>
<service name="Artech.WcfServices.Service.CalculatorService">
<endpoint binding="ws2007HttpBinding"
bindingConfiguration="bindingWithNoneSecurityMode"
contract="Artech.WcfServices.Service.Interface.ICalculator" />
</service>
</services>
</system.serviceModel>
</configuration>

特别要注意:当两处都进行设置时要注意[P371]
四:安全会话[P380]
对于NetTcpBinding由于本身基于连接(连接可以看成是通信双方之间的会话)的特性,因些安全会话机制始终是开启的;
WSDualHttpBinding要通过会话的机制维护两个HTTP通道之间的关系,因此安全会话机制绐终是开启的;
WSHttpBinding和WS2007HttpBinding才能显示的开启和关闭安全会话;

<configuration>
<system.serviceModel>
<bindings>
<ws2007HttpBinding>
<binding name="disableSecureSessions">
<security>
<message establishSecurityContext="false" />
</security>
</binding>
</ws2007HttpBinding>
</bindings>
<services>
<service name="Artech.WcfServices.Service.CalculatorService">
<endpoint binding="ws2007HttpBinding"
bindingConfiguration="disableSecureSessions"
contract="Artech.WcfServices.Service.Interface.ICalculator" />
</service>
</services>
</system.serviceModel>
</configuration>

WCF学习笔记之传输安全的更多相关文章
- WCF学习笔记之事务编程
WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...
- WCF 学习笔记之异常处理
WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...
- WCF 学习笔记之双工实现
WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...
- C# WCF学习笔记(二)终结点地址与WCF寻址(Endpoint Address and WCF Addressing) WCF中的传输协议
URI的全称是 Uniform Rosource Identifire(统一资源标识),它唯一标识一个确定的网绐资源,同时也表示资源所处的位置及访问的方式(资源访问所用的网络协议). 对于Endpoi ...
- WCF学习笔记(2)——使用IIS承载WCF服务
通过前面的笔记我们知道WCF服务是不能独立存在,必须“寄宿”于其他的应用程序中,承载WCF服务的应用程序我们称之为“宿主”.WCF的多种可选宿主,其中比较常见的就是承载于IIS服务中,在这里我们来学习 ...
- WCF学习笔记一
Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. 整合了原有的windows通讯的 . ...
- WCF学习笔记1--发布使用配置文件的服务
关于WCF的入门网上资料很多,可以参考蒋金楠老师的博客http://www.cnblogs.com/artech/archive/2007/02/26/656901.html,我是从这篇博客开始学习的 ...
- 地址(Address)——统一资源表示(URI)——WCF学习笔记(2)
统一资源标识(URI) URI:Uniform Resource Identifier(统一资源标识),唯一地标识一个网络资源的同时也表示资源所处的位置的方式(资源访问所用的网络协议). URI结构: ...
- 构建一个简单的WCF应用——WCF学习笔记(1)
通过<WCF全面解析>来知识分享....感谢蒋金楠老师@Artech 一.VS中构建解决方案 Client一个控制台程序模拟的客户端,引用Service.ServiceModel.dl ...
随机推荐
- SOA一些资料
SOA相关资料整理分享 2015-03-26 16:16 by 蘑菇先生, 693 阅读, 9 评论, 收藏, 编辑 昨@幸福框架同学问能否推荐SOA一些资料.想想之前看过不少资料文档,就整理分享下. ...
- Windows Phone 8.1 多媒体(3):音乐
原文:Windows Phone 8.1 多媒体(3):音乐 Windows Phone 8.1 多媒体(1):相片 Windows Phone 8.1 多媒体(2):视频 Windows Phone ...
- c#之函数创建和闭包
c#之函数创建和闭包 阅读目录: 动态创建函数 匿名函数不足之处 理解c#中的闭包 闭包的优点 动态创建函数 大多数同学,都或多或少的使用过.回顾下c#中动态创建函数的进化: C# 1.0中: pub ...
- MVC应用程序使用Web Services(asmx)
原文:MVC应用程序使用Web Services(asmx) 这次,我们练习MVC应用程序中,应用web service.先在MVC应用程序中创建一个目录Services,将用来存储Service.a ...
- 分布式基础学习(2)分布式计算系统(Map/Reduce)
二. 分布式计算(Map/Reduce) 分 布式式计算,同样是一个宽泛的概念,在这里,它狭义的指代,按Google Map/Reduce框架所设计的分布式框架.在Hadoop中,分布式文件 系统,很 ...
- sdut 3-4 长方形的周长和面积计算
3-4 长方形的周长和面积计算 Time Limit: 1000MS Memory limit: 65536K 标题叙述性说明 通过本题的练习能够掌握拷贝构造函数的定义和用法: 设计一个长方形类Rec ...
- DataTable相关操作,筛选,取前N条数据,获取指定列数据
DataTable相关操作,筛选,取前N条数据,获取指定列数据2013-03-12 14:50 by Miracle520, 2667 阅读, 0 评论, 收藏, 编辑 1 #region DataT ...
- EasyUI的后台界面
EasyUI的后台界面搭建及极致重构 〇.前言 要了解一个东西长什么样,至少得让我们能看到,才能提出针对性的见解.所以,为了言之有物,而不是凭空漫谈,我们先从UI说起,后台管理页面的UI我们将使用应用 ...
- asp.net中TextBox里面实现回车触发指定事件
原文:asp.net中TextBox里面实现回车触发指定事件 我在一个user_top用户控件里面做了个包括搜索的功能.然后再一个页面中添加这个用户控件.浏览时候在textbox里面输入搜索内容后.下 ...
- 清除css、javascript及背景图在浏览器中的缓存
在实际项目开发过过程中,页面是上传到服务器上的.而为了减少服务器的压力,让用户少加载,浏览器会将图片.css.js缓存到本地中,以便下次访问网站时使用.这样做不仅减少了服务器的压力,并且也减少了用户的 ...