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 ...
随机推荐
- Microsoft dotnetConf 2015
Microsoft dotnetConf 2015 一些整理 dotnetConf 2015 直播计划: 第一天 (10 个主讲) - .NET Product Teams 主讲人为 .NET 产 ...
- HTTP 错误500.19 -Internal Server Error
原文:HTTP 错误500.19 -Internal Server Error HTTP 错误500.19 -Internal Server Error 错误代码 0x80070021 评论1 字号: ...
- TML5安全:CORS(跨域资源共享)简介
来源:http://blog.csdn.net/hfahe/article/details/7730944 前言:像CORS对于现代前端这么重要的技术在国内基本上居然很少有人使用和提及,在百度或者Go ...
- 调查问卷Html5发展综述
[Html5可以离线操作.是否能开发Html5离线网络应用程序] 按常理Html5开发出来的是Web网页应用.则需网络连接才干下载并使用,作为Html5对离线应用开发的支持最大的特殊,支持离线须要满足 ...
- Kafka spring 集成
下载配置kafka参考该链接:http://www.cnblogs.com/super-d2/p/4534323.html pom.xml: <dependency> <groupI ...
- CodeIgniter学习一:基础知识
1. url片段(CI域名组成说明) example.com/index.php/test/index 第一部分(test):控制器 第二部分(index):方法,动作 如果第二部分 ...
- Extjs中GridPanel的各个属性与方法
1.Ext.grid.GridPanel 主要配置项: store:表格的数据集 columns:表格列模式的配置数组,可自动创建ColumnModel列模式 autoExpandColumn:自动充 ...
- 校验、AJAX与过滤器
随笔- 65 文章- 1 评论- 343 ASP.Net MVC开发基础学习笔记:四.校验.AJAX与过滤器 一.校验 — 表单不是你想提想提就能提 1.1 DataAnnotations( ...
- Android中怎么去除标题栏详解
怎么出去标题栏,我再另一个博客中亦有实例在这里再详细的解释一下,也让自己能更加巩固最简单也是小重要的东西. 这里有两种方法是比较好的... 第一种: 首先,在values中建一个theme.xml 代 ...
- MY WAY程序(十八) 团队开发
1.通信知识 要了解的强哥的移动通信先验知识布局.我和另外一个毕业生有自己的学习,但我真的没有认真看.了解了一下,其余大部分时间在搞nodejs.另外一个应届毕业生则是按着一本电子书 ...