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学习笔记之传输安全的更多相关文章

  1. WCF学习笔记之事务编程

    WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...

  2. WCF 学习笔记之异常处理

    WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...

  3. WCF 学习笔记之双工实现

    WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...

  4. C# WCF学习笔记(二)终结点地址与WCF寻址(Endpoint Address and WCF Addressing) WCF中的传输协议

    URI的全称是 Uniform Rosource Identifire(统一资源标识),它唯一标识一个确定的网绐资源,同时也表示资源所处的位置及访问的方式(资源访问所用的网络协议). 对于Endpoi ...

  5. WCF学习笔记(2)——使用IIS承载WCF服务

    通过前面的笔记我们知道WCF服务是不能独立存在,必须“寄宿”于其他的应用程序中,承载WCF服务的应用程序我们称之为“宿主”.WCF的多种可选宿主,其中比较常见的就是承载于IIS服务中,在这里我们来学习 ...

  6. WCF学习笔记一

    Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. 整合了原有的windows通讯的 . ...

  7. WCF学习笔记1--发布使用配置文件的服务

    关于WCF的入门网上资料很多,可以参考蒋金楠老师的博客http://www.cnblogs.com/artech/archive/2007/02/26/656901.html,我是从这篇博客开始学习的 ...

  8. 地址(Address)——统一资源表示(URI)——WCF学习笔记(2)

    统一资源标识(URI) URI:Uniform Resource Identifier(统一资源标识),唯一地标识一个网络资源的同时也表示资源所处的位置的方式(资源访问所用的网络协议). URI结构: ...

  9. 构建一个简单的WCF应用——WCF学习笔记(1)

    通过<WCF全面解析>来知识分享....感谢蒋金楠老师@Artech 一.VS中构建解决方案   Client一个控制台程序模拟的客户端,引用Service.ServiceModel.dl ...

随机推荐

  1. iOS 开发者必不可少的 75 个工具

    如果你去到一位熟练的木匠的工作室,你总是能发现他/她有一堆工具来完成不同的任务. 软件开发同样如此.你可以从软件开发者如何使用工具中看出他水准如何.有经验的开发者精于使用工具.对你目前所使用的工具不断 ...

  2. hdu - 3049 - Data Processing(乘法逆元)

    题意:N(N<=40000)个数n1, n2, ..., nN (ni<=N),求(2 ^ n1 + 2 ^ n2 + ... + 2 ^nN) / N % 1000003. 题目链接:h ...

  3. iOS_23_undress Girl

    最后效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill ...

  4. JS自动化测试 单元测试之Qunit

    前言 因为公司开发了一套javascript SDK需要测试,在网上找了很久,找到了JQuery团队开发的QUnit,和基于JUnit的JsUnit,还有一些还没有看,先讲讲QUnit吧 下载 登录J ...

  5. HEAP CORRUPTION DETECTED

    发生主要是由于这个问题给写入超出预分配的空间,注意检查越界情况 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  6. 《Shell十三问》笔记(上)

    <shell十三问>是网中人前辈首发在CU论坛上对SHELL的一些整理,非常值得一读 注:笔记的标号非问题标号,而是知识点的标号.本篇笔记记录的是1-10问的知识点 (1)IFS:Shel ...

  7. GNU中宏定义对可变参数的支持(引自百度)

    http://zhidao.baidu.com/question/125413478.html 问:#define PDEBUG(fmt,args...) fprintf(stderr,fmt, ## ...

  8. JavaScript一个类继承中实现

    JavaScript类是默认原型对象继承: var Person = function() { this.name = "people"; this.hello = functio ...

  9. 制作iis自动安装包

    原文:制作iis自动安装包 MS 一直没有提供可独立安装的 IIS 安装包,Windows 的缺省安装没有安装它,通常要到控制面板的"添加/删除 Windows 程序"中去选择安装 ...

  10. 33、Python.Unix和Linux系统管理指南.(美)基弗特