WCF入门(十一)---WCF安全
一个强大的WCF服务安全系统,拥有两种安全模式或级别预期的客户端可以访问的服务。这是常见的分布式事务的安全威胁正在放缓,在很大程度上由WCF决定。
关键的安全功能
WCF服务有四个主要的安全功能,如下图所示。
认证- 这里认证是不限定于识别消息的发送者,但是相互的,即消息接收器的认证是必需的,以排除任何种类的中间人攻击的可能性。
授权- 这是采取了一个WCF服务,以确保安全性的下一步骤,并在此确定服务是否应授权调用方进一步或不会进行。虽然授权不依赖于身份验证时,它通常如下认证。
保密 - 调用者和服务之间的信息交流是保密的,限制其解释并不打算为其他人公开消息。为了使这成为可能,加密与各种各样的其他机制一起使用。
完整性- 最后一个关键概念是保持完整性,即提供了保证,该消息尚未从发送者到接收者不被任何人在这一过程篡改。
传输安全模式
WCF提供以下传输安全模式,以确保在客户机和服务器之间的安全通信。多样传输安全模式如下所述。
None - 此模式不能保证任何消息安全和服务不获取有关客户端的任何凭据。这种模式是非常危险的,因为它可以使信息被篡改,因此不推荐使用。
<wsHttpBinding>
<binding name="WCFSecurityExample">
<security mode="None"/>
</binding>
</wsHttpBinding>
Transport - 这种模式是实现信息通过使用通信协议,如TCP,IPC,HTTPS和MSMQ一个安全的传输的最简单方法。这种模式是比较有效的,当在传输点至点,并主要是用于在受控环境中,也就是说,内部网应用。
<wsHttpBinding>
<binding name="WCFSecurityExample">
<security mode="Transport"/>
</binding>
</wsHttpBinding>
Message - 安全模式可以相互验证,并提供隐私的消息进行加密,并且可以通过http,这不被认为是一种安全协议被传输在很大程度上。这里的安全性提供了端 - 端,而不考虑有多少中介参与消息传送和是否有一个安全的运输或没有。该模式是通过互联网应用程序通常使用。
<wsHttpBinding>
<binding name="WCFSecurityExample">
<security mode="Message"/>
</binding>
</wsHttpBinding>
Mixed - 这种安全模式是不经常使用,客户端身份验证仅在客户端级别提供。
<wsHttpBinding>
<binding name="WCFSecurityExample">
<security mode="TransportWithMessageCredential"/>
</binding>
</wsHttpBinding>
Both - 此安全方式包括两种传输安全性和信息的安全性,提供了健壮的安全盖,但通常会导致超载的整体性能。这一个仅由MSMQ支持。
<netMsmqBinding>
<binding name="WCFSecurityExample">
<security mode="Both"/>
</binding>
</netMsmqBinding>
所有的WCF绑定,除非有basicHttpBinding传输安全性默认情况下有一定关系。
消息安全级别
消息级安全性不依赖于WCF协议。它是通过使用一个标准的算法对数据进行加密采用与消息数据本身。有若干客户端凭证可用于不同的绑定的消息的安全级别,这些将在下面讨论。
WCF消息级安全性的客户端证书
None :在此,使用加密来保护该消息而被执行,这意味着,该服务可以由一个匿名客户访问没有客户机认证。除了basicHttpBinding,所有的WCF绑定支持此客户端凭据。然而,应当注意的是,对于NetNamedPipeBinding客户端凭证不可用。
Windows - 在这里无论是信息的加密和认证的客户端发生了一个实时登录的用户。在此情况下,也不同于所有其他的WCF绑定,NetNamedPipeBinding不可用以及basicHttpBinding不提供支持。
UserName - 这里消息被加密,以及通过提供用户名固定,而客户端进行认证,因为它们需要提供密码。 basicHttpBinding就像上面的两个客户端凭证,不支持用户名和它不适用于NetNamedPipeBinding。
Certificate - 随着信息加密,客户端和服务获得与证书的身份验证。此客户端证书可用,并且支持所有的WCF绑定,除了NetNamedPipeBinding。
IssuedToken - 类似CardSpace从一个机构颁发的令牌用于验证的消息。这里也进行消息的加密。
下面的代码显示了客户端凭据如何配置WCF的信息安全等级/模式。
<netTcpBinding>
<binding name="WCFMessageSecurityExample">
<security mode="Message">
<message clientCredentialType="None"/>
</security>
</binding>
</netTcpBinding> <netMsmqBinding>...</netMsmqBinding>
</bindings>
<behaviors>...</behaviors>
这里,必须指出的是,传输安全模式具有超过该消息的安全级别的边缘,因为前者是更快。它不需要任何额外的编码,并提供互操作性的支持,并且因此不会降低整体性能。
然而,从安全角度考虑,将消息安全模式是更加健壮,并且独立的协议,并提供端到端的安全性。
原文地址:http://www.yiibai.com/wcf/wcf_security.html
WCF入门(十一)---WCF安全的更多相关文章
- WCF入门三[WCF宿主]
一.概述 WCF程序必须在宿主上运行,也就是WCF服务必须寄宿在某一个windows的进程中,可以是IIS.控制台程序.窗体程序.WAS以及所有.net程序等程序进程中.在我用VS2013创建WCF服 ...
- WCF入门一[WCF概述]
一.什么是WCF WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架.它使得开发者能够建立一个跨平台的.安全.可信赖.事务性的解决方案,且能与已有系统兼容协作 ...
- WCF入门教程[WCF基本应用]
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- WCF入门四[WCF的通信模式]
一.概述 WCF的通信模式有三种:请求/响应模式.单向模式和双工通信. 二.请求/响应模式 请求/响应模式就是WCF的默认模式,前面几篇随笔中的示例都是这种模式,当客户端发送请求后(非异步状态下),即 ...
- 纯手写wcf代码,wcf入门,wcf基础教程
1.定义服务协定 =>定义接口 using System.ServiceModel; namespace WcfConsole { /// <summary> /// 定义服 ...
- WCF入门二[WCF的配置文件]
一.概述 往往在很多项目中数据库连接字符串.变量和一些动态的加载类会写在配置文件中.WCF也会在配置文件中写入一些配置参数,比如服务的地址.服务用于发送和接收消息的传输和消息编码等,通过配置文件可以灵 ...
- WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]
WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...
- 学习WCF入门的第一个实例
一.概述 WCF说白了就是一个基于终结点的通信手段!就是Service端提供一定的功能实现,然后暴露出一个或多个终结点,Client端调用Service端的功能(可以理解为调用一个函数),那么Clie ...
- WCF入门教程(五)配置文件
WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...
- WCF入门教程(四)通过Host代码方式来承载服务
WCF入门教程(四)通过Host代码方式来承载服务 之前已经讲过WCF对外发布服务的具体方式. WCF入门教程(一)简介 Host承载,可以是web,也可以是控制台程序等等.比WebService有更 ...
随机推荐
- 最新区分兼容IE6/IE7/IE8/IE9/FF的CSS HACK写法和Css if hack条件语法操作说明
自从安装了IE8.0正式版本!木头 就对基本的几个 CSS HACK的做一下归纳!希望对网页前端布局DIV+CSS的实施者有所帮助! 本文就主要以:IE6+IE7+IE8+IE9+FF为主要研究对象 ...
- DataSnap数据库连接池,数据集对象池的应用
传统的应用服务器的开发往往是在ServerMethods单元中拖放一堆TDataSet, TDaTaSetProvider控件,这是一个最简单粗暴的开发方向,往往会造成服务端程序文件的臃肿.服务运行期 ...
- 深入剖析——float之个人见解
浮动的原本作用仅仅是为了实现文字的环绕效果. 以下分别是html与css代码,显示效果如下图.因为两个div使用了float浮动属性,所以脱离了标准文档流.让父元素撑开高度,我们需要清除浮动. < ...
- Eclipse C/C++开发环境搭建
1 Eclipse的安装 到http://java.sun.com/j2se/1.5.0/download.jsp 下载JRE安装: 到http://eclipse.org下载Eclipse安装.(这 ...
- 在Visual Studio 2010 中创建类库(dll)
创建类库 选择"文件"->新建->项目->Visual C# ->类库,输入名称,选择位置,单击确定 浏览解决方案资源管理器,可以看到两个C#类,第一个是A ...
- js 截取某个字符前面或者后面的字符串
/* string 字符串; str 指定字符; split(),用于把一个字符串分割成字符串数组; split(str)[0],读取数组中索引为0的值(第一个值),所有数组索引默认从0开始; */ ...
- WPF 多线程处理(1)
WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 废话不多说,先上图: 多线程处理数据后在th ...
- C#WinForm中播放背景音乐(亲测可用)
using System.Runtime.InteropServices; public static uint SND_ASYNC = 0x0001; public static uint SND_ ...
- Makedown常用符号整理
整理自:http://www.jianshu.com/p/1e402922ee32 不过这里发现博客园的makedown语法支持还不完善,代码语法显示挺有问题的,比较遗憾. 标题 # 一级标题## 二 ...
- python爬取某些网站出错的解决办法
用urllib2.urlopen方法打开糗事百科的网站,http://www.qiushibaike.com/,发现会失败,网上百度,说可能是服务器端对爬虫做了屏蔽,需要伪装header头部信息,下面 ...