WCF安全之EndPointIdentity

最近在做一个项目,应用了WCF进行分布式开发,中间还涉及到消息路由器等 ,好在有WCF提供了强大的基础支持,当然,本身也作了不少的扩展,实际,我 最关心的是WCF的安全问题,网上不少朋友介绍的WCF的安全也是少得可怜,微软 发布的WCF Security GUID好像讲得也只是入门级别的教程,离真正应用到项目 中还是有很大的距离,这也让我萌发了分享的想法,今天先放出来占个位置吧,有反对的朋友砖头轻 点,呵~,可以告诉你,WCF的安全里,有很多的小秘密,当然还是要告诉你,并且有此小秘密是要自己去体验后才知道,在博客排版方面 ,李会军(军哥)让人 感觉最舒服,在解说方面,军哥也是以简洁著称,我在 这里也学习一下,一起简洁吧,我希望以后的WCF安全探讨里,一次只讲一个小 内容好了~

概述

Windows Communication Foundation (WCF) 是 Microsoft 为构建面向服务的应用程序而提供的统一编程模型(摘自MSDN),在 分布式环境下的安全问题尤为重要,如果你觉得使用了WCF默认的安全措施可以 让你高枕 无忧,那明天你可就以回家种田了,当然,对于学习来说,足够了~,但我们讲的是真正的项目应用,WCF在各种协议下的安全提供和保证是不尽相同 的。

背景

故事发生在一个阳光明媚的下午,一名女子为了混入某 小区行窃,将上次偷到的管道维修工作牌别在胸前,当她走近管理员身边时,被 管理员一把抓个正着,原来这小区从上次失窃事件后,已经将维修队解散,现在 维修都是由管理员联系外部人员,自然也不用别什么工作牌了。

问题呈 现

1、许多朋友对这个EndPointIdentity相当的不屑顾,千万不要小看它 呀,有时候你被wcf弄生弄死的时候还不知道为什么,这次你应该看清楚了。当 你新建一个WCF服务类库时,正确的EndPointIdentity声明如下

<endpoint address ="UserData"  binding="netTcpBinding"  contract="UserService.IUserData"  bindingConfiguration="EndpointBinding">
<identity>
     <dns  value="localhost"/>
</identity>
</endpoint>

说实现,EndPointIdentity这东西在革命 初期(wcf初建立时),我觉得它就像是人一盲肠,多了它也没啥用,少了它也不 觉得碍事,你不信?删了试试,你要真删除了其实也没什么。

2、客户端 如果引用了服务元数据,生成的EndPointIdentity和服务器端的一模一样,不信 你自己看,实际上,你也可以把它删除了(革命初期),对服务调用没啥影响。

3、在你的绑定中,安全选项为None的时候,你想怎么弄它就怎么弄它,不要紧,随便改。如下

<binding  name="EndpointBinding">
   <security  mode="None">
      <transport  clientCredentialType="Windows"  protectionLevel="EncryptAndSign"/>
       <message clientCredentialType="Certificate"/>
    </security>
</binding>

4、一旦你将安 全策略调整为:Transport(传输安全)

<security  mode="Transport">
   <transport  clientCredentialType="Windows"  protectionLevel="EncryptAndSign"/>
   <message  clientCredentialType="Certificate"/>
</security>

时间: 2024-07-31 20:26:42

WCF安全之EndPointIdentity的相关文章

艾伟:WCF安全之EndPointIdentity

最近在做一个项目,应用了WCF进行分布式开发,中间还涉及到消息路由器等,好在有WCF提供了强大的基础支持,当然,本身也作了不少的扩展,实际,我 最关心的是WCF的安全问题,网上不少朋友介绍的WCF的安全也是少得可怜,微软发布的WCF Security GUID好像讲得也只是入门级别的教程,离真正应用到项目中还是有很大的距离,这也让我萌发了分享的想法,今天先放出来占个位置吧,有反对的朋友砖头轻 点,呵~,可以告诉你,WCF的安全里,有很多的小秘密,当然还是要告诉你,并且有此小秘密是要自己去体验后才

艾伟_转载:WCF安全之EndPointIdentity

最近在做一个项目,应用了WCF进行分布式开发,中间还涉及到消息路由器等,好在有WCF提供了强大的基础支持,当然,本身也作了不少的扩展,实际,我 最关心的是WCF的安全问题,网上不少朋友介绍的WCF的安全也是少得可怜,微软发布的WCF Security GUID好像讲得也只是入门级别的教程,离真正应用到项目中还是有很大的距离,这也让我萌发了分享的想法,今天先放出来占个位置吧,有反对的朋友砖头轻 点,呵~,可以告诉你,WCF的安全里,有很多的小秘密,当然还是要告诉你,并且有此小秘密是要自己去体验后才

WCF分布式开发常见错误(27)

WCF分布式开发常见错误(27):Secure channel cannot be opened because security negotiation with the remote endpoint has failed 这个问题是在调试WCF分布式安全开发实践(12):消息安全模式之自定义X509 证书验证:Message_CustomX509Certificate_WSHttpBinding .发现并提出来的 ,我帮助调试,找到了问题的解决办法.发出来一起分享给大家. [1.问题描述]

[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)

在采用TLS/SSL实现Transport安全的情况下,客户端对服务证书实施认证.但是在默认情况下,这种认证仅仅是确保服务证书的合法性(通过数字签名确保证书确实是由申明的CA颁发)和可信任性(证书或者CA证书存储于相应的可信赖存储区).而WCF提供服务证书并不限于此,客户端对服务认证的模式应该是这样的:服务端预先知道了服务的身份,在进行服务调用之前,服务端需要提供相应的凭证用以辅助客户端确认调用的服务具有预先确定的身份.对于这样的服务认证模式,具有两个重要的概念,即服务凭证和服务身份. 目录:

[转贴][WCF Security] 3. X509 身份验证

原文:http://www.rainsts.net/article.asp?id=474   个人认为在 Intranet / Internet 环境下,最方便的认证方式应该是 X.509 数字证书.当然,还有一个原因是我用 Windows Authentication 从来没成功过. 以下我们详细描述如何创建 "Certificate Authentication". 1. 创建数字证书 一般情况下,我们为服务器以及每个客户端都单独创建一个服务器,以便标识其唯一身份.创建数字证书时,

在 WCF 中使用高效的 BinaryFormatter 序列化

本文将定义一个 WCF 终结点行为扩展,以在 WCF 中使用更高效的 BinaryFormatter 进行二进制序列化,并实现对是否使用传统二进制序列化功能的可配置. 介绍 实现步骤 使用方法 效果   介绍 在 OEA 框架中,是使用 WCF 作为数据传输框架.但是使用 WCF 内部的二进制序列化,序列化后的数据大小,要比使用传统的 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 类进行序列化后的数据大小要大得多.作

wcf 报内部错误,无法处理该请求。怀疑是sql的问题

问题描述 wcf 报内部错误,无法处理该请求.怀疑是sql的问题 用.net 4.0 + mysql写WCF的事务处理例子. 不加sql相关的东西都没问题. 加上就报内部错误,而且没有详细错误,也不知道为什么,我在配置文件开了debug,并且都加try了,还是没有详细信息. 测试了好几次,就怀疑是SQL的这部分有问题,但是我还看不出哪里的问题.请教. [OperationBehavior(TransactionScopeRequired=true)] public void intoMoney(

WCF 服务应用程序与 服务库之间的区别

简单理解,        WCF服务库,可以认为是一个包含WCF服务以及契约定义的类库.这儿库还不能直接运行,你可以在其他项目里引用,在宿主里启用托管这个库.而WCF应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定义,可以直接看到运行的效果.此项目模板应该是基于IIS托管的程序.        前者一般考虑WCF服务设计的时候,服务类的定义为单独的库,可以为其它项目使用.提高代码的复用性.        后者在开发基于IIS托管的WCF服务程序时,比较多见,自学的时候也可以使

wcf-使用MSMQ消息队列的WCF的效率的问题。

问题描述 使用MSMQ消息队列的WCF的效率的问题. 请教个问题,WCF在使用MSMQ的时候,每次WCF程序处理MSMQ中的数据量,每秒只有几百条. 以下是测试数据 处理消息数: 180000 开始时间: [2013-11-01 15:35:27] Start To Save Log To DB. 结束时间: [2013-11-01 15:51:12] Finish To Save Log To DB. 耗时: 00:15:45 基本上算下来也就每秒190多条,以前好的时候可以达到200多条,其