WCF系统安全的身份认证和WEB 应用程序系统安全的身份认证可行性分析方案.doc_第1页
WCF系统安全的身份认证和WEB 应用程序系统安全的身份认证可行性分析方案.doc_第2页
WCF系统安全的身份认证和WEB 应用程序系统安全的身份认证可行性分析方案.doc_第3页
WCF系统安全的身份认证和WEB 应用程序系统安全的身份认证可行性分析方案.doc_第4页
WCF系统安全的身份认证和WEB 应用程序系统安全的身份认证可行性分析方案.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

此文档收集于网络,如有侵权,请联系网站删除此文档仅供学习与交流第 1 章. 第 2 章. 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 第 3 章. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 3.8. 3.9. 3.10. 3.11. 3.12. 3.13. 第 4 章. 第 5 章. 第 6 章. 文 档 目 录 系统安全认证概述- 2 WCF 通讯协议 - 3 WCF 与以往技术的比较- 3 WCF 在安全性方面的改进- 3 WCF 在性能方面的改进- 4 WCF 开发模型和以往的其他分布式技术的区别 - 4 Binding 类型比较 - 5 WCF 实例会话模型 - 6 证书认证体系 - 7 WCF 身份验证机制 - 7 传输安全模式之匿名客户端身份验证 - 8 传输安全模式之基本身份验证(Windows 帐户验证)- 9 传输安全模式之自定义用户名密码身份验 - 10 传输安全模式之 Windows 身份验证 - 11 传输安全模式之 Certificate 证书身份验证 - 11 传输安全模式之自定义 X509Certificate 证书身份验证 - 12 消息安全模式之匿名客户端身份验 - 13 消息安全模式之 UserName 客户端身份验证 - 13 消息安全模式之 NetTcpBinding 客户端身份验证- 14 消息安全模式之自定义用户名密 - 14 消息安全模式之证书客户端身份验证 - 15 消息安全模式之自定义证书客户端身份验证- 15 证书载体论述 - 16 可行性分析报告- 17 WEB 应用程序证书认证体系- 17 第1章. 系统安全认证概述 本文档重点讨论WCF系统安全的身份认证和WEB 应用程序系统安全的身份认证。WCF 系统的身份认证体系与其相关的通讯协议紧密联系,有些通讯协议只能采用证书认证或 Windows 身份认证等方式。本文档重点讨论阐述基于 wsHttpBindi ng 通讯协议的 WCF 安全认证。WEB 应用程序系统安全采用以 WEB 服务器证书身份验证和客户端即浏览器身份验证方式。 第2章. WCF通讯协议 2.1. WCF 与以往技术的比较 从表格中我们可以看出,WCF 似乎等于前面几项技术之和,但事实并非如此,它既整合了原来的多项技术,而且拥有着自己得天独厚的优点,如下:u 统一性(Integration)u 互操作性u 安全可靠(Secure and Reliable)u 兼容性 2.2. WCF 在安全性方面的改进 为了保证数据通讯的安全,WCF 提供了三种保护措施:1)机密性(Confidentiality)2)完整性(Integrity) 3)可验证性(Authentication),这三种措施联合起来被称为 CIA。并且这些措施在 WCF 中是默认支持的。机密性能保证传输的数据是经过加密的,不被非 法监听(eavesdrop),而完整性利用数字签名技术防止数据在传输过程中被注入(injected)或篡改(tampered),而验证(Authenticati on)可以采用灵活的策略来处理达到的客户端请求,比如用户名密码验证,客户端证书验证等。 2.3. WCF 在性能方面的改进 大家都知道,越复杂,结构层次越多的框架一般效率也越低,WCF 是以往其他分布式技术的集成者,它结构相对复杂,且由于默认支持安全传输,在性能上应该不如 Xml Web Servi ce 技术,更不用和.Net Remoting 等比较,这是一个有框架设计经验和架构师们都明白的简单道理,但是事实怎么样呢?wcf 比 xml web service 性能到底是高还是底,低要低多少?这些问题很值得大家的研究和讨论,其实已经有人在此方面做了很详细的对比,msdn 上便有一篇专门介绍此方面知识的文章: WCF Performance Comparison ,对 wcf 性能感兴趣的同学,可以到这文章中学习。很详尽。限于条件的限制,我这里只在我一台机器上作一个简单的对比,仅供参考。分别测试循环 1000 次对 wcf 和 xml web service 相同功能方法的调用,得到如下的数据: 2.4. WCF 开发模型和以往的其他分布式技术的区别 WCF 不仅仅在功能上集成了以往的分布式开发技术,而且在编程模型中充分吸取原来技术的 优点 ,如 xml web service 的 声明 性编程 (declareable),和 .net remoti ng 中的 配置(configuration)和 wse 中的安全策略声明性配置方法,这样 WCF 虽然功能强大,而且学习简单,便于推广。在 vs2008 中还集成了 WCF Test Client ,开发服务的时候,甚至不需要再开发测试客户端就能用 WCF Test Client 来进行调用,简单之极,示例程序更是无需更改以行代码,便可以运行。上面这些是说了 WCF 编程的简单易学性,我总结出来,主要包括以下几种特性: u 基于声明性编程模型; u 充分利用配置来实现框架的灵活;u 使用配置的同时,仍保留代码编程的模型,使得框架更加丰富,便于控制;u 默认的 CIA 支持,极大地简化了安全控制。 2.5. Binding 类型比较 Binding名称Binding类型比较Configuration Element制作:耿宗国 日期:2009-12-30描述BasicHttpBindingWSHttpBindingWSDualHttpBindingWSFederationHttpBindingNetTcpBindingNetNamedPipeBindingNetMsmqBindingNetPeerTcpBindingMsmqIntegrationBindingbasicHttpBindingwsHttpBindingwsDualHttpBindingwsFederationHttpBindingnetTcpBindingnetNamedPipeBindingnetMsmqBindingnetPeerTcpBindingmsmqIntegrationBinding一个指定用符合基本网络服务规范通讯的binding,它用http进行传输,数据格式为text/xml一个安全的通用的binding,但它不能在deplex中使用一个安全的通用的binding,但能在deplex中使用一个安全的通用的支持WSF的binding,能对用户进行验证和授权在wcf应用程序中最适合跨机器进行安全通讯的binding在wcf应用程序中最适合本机进行安全通讯的binding在wcf应用程序中最适合跨机器进行安全通讯的binding,并且支持排队一个支持安全的,多机交互的binding一个用于wcf与现有msmq程序进行安全通讯的bindingBinding类型比较制作:耿宗国 日期:2009-12-30BingdingInteroperabilitySecurity(None),SessionTransactionsDuplexBasicHttpBindingWSHttpBindingBasic Profile 1.1 Transport,MessageTransport,WS (Message),MixedNone, (None)(None), Transport,Reliable SessionNone(None), Yesn/an/aWSFederationHttpBWS-FederationNetNamedPipeBindi.NETMsmqIntegrationBiMSMQWSDualHttpBinding WSindingNetTcpBinding .NETngNetMsmqBinding .NETNetPeerTcpBinding Peernding(Message)(Message)(Transport),Message(Transport)Message,(Transport),Both(Transport)(Transport)(Reliable Session)(None), ReliableSessionReliable Session,(Transport)None, (Transport)(None)(None)(None)(None), Yes(None), Yes(None), Yes(None), Yes(None), Yes(None)(None), YesYesNoYesYesNoYesn/a2.6. WCF 实例会话模型 u u u Per-Call:每次的客户端请求分配一个新的服务实例。 类似于 Net Remoting 的Singl e-Call 模式, 在这种方式下,程序的扩展性是最强的,在事务编程与队列服务中优势更为明显。但是由于频繁地创建与销毁实例,会对性能造成一定的影响。 Per-Session: 服务端需要保持客户端的状态,为每次客户端连接分配一个服务实例,客户端的每次调用,会使用到同一个实例,如果实例销毁,客户端的调用会抛出异常。类似于 Net Remoting 的客户端激活模式;这是 wcf 的默认支持方式. 由于每个客户端都需要维护一个会话,需要占用较多的资源来保存服务会话状态。如果存在多个独立的客户端,则创建专门的服务实例的代价太大。 Singleton: 所有客户端而言,都只有一个服务实例,当服务端被 host 的时候,就会创建,有且仅有一个服务实例来响应客户端服务调用的请求,在多个客户端请求下,服务端只会处理一个客户端的请求,其他的排队等候处理。因此在系统的吞吐量、相应效率、系统服务性能上都存在严重的瓶颈,好处是,可以共享数据。 第3章. 证书认证体系 3.1. WCF 身份验证机制 绑定协议和客户端验证方式在 transport 模式下的对应关系: 3.2. 传输安全模式之匿名客户端身份验证 SSL 安全套接字层一个数据传输加密机制,它可以确保在客户机与服务器之间传输的数据仍然是安全与隐密的。传输安全 (HTTPS) 确保保密性和完整性。使用安全套接字层 (SSL) 证书对服务器进行身份验证,并且客户端必须信任服务器的证书。对客户端不通过任何机制进行身份验证,因此是匿名的。SSL 广泛用于 Int ernet 中,以便向客户端证明服务的身份,并且随后向通道提供保密性(加密)。这里要经过三次握手以后,客户端和服务端建立安全套接字连接。在握手期间,服务还将其 SSL 证书发送到客户端。该证书包含一些信息,例如证书的到期日期、颁发机构以及网站的统一资源标识符 (URI)。客户端将该 URI 与它原来联系的 URI 进行比较,以确保二者匹配,并且对日期和颁发机构进行检查。客户机和服务器对它们将要为此会话使用的密钥及加密方法达成一致。客户机使用服务器证书验证服务器。握手之后,SSL 被用来加密和解密 HTTPS(组合 SSL 和 HTTP 的一个独特协议)请求和服务器响应中的所有信息。这个就是为什么 WCF 传输安全需要使用证书的原因,客户端可以不进行身份验证。但是要有一个服务器证书来保证客户端和服务器之间能够建立 SSL安全套接字连接。 证书注册与查询 输入:makecert -sr localmachine -ss My -n CN=WCFServerPK -sky exchange -pe -r 输入:makecert -sr localmachine -ss My -n CN=WCFClientPK -sky exchange -pe r htt pcfg set ssl -i :9001-h 9174185b2860b6d5ec3de133d5fcc4e1419b09e5 htt pcfg del ete ssl -i :9001-h 9174185b2860b6d5ec3de133d5fcc4e1419b09e5 htt pcfg query ssl 3.3. 传输安全模式之基本身份验证(Windows 帐户验证) 传输安全模式之基本身份验证需要服务器需要一个有效的可用于安全套接字层 (SSL) 的 X.509 证书,并且客户端必须信任此服务器证书。如果不信任此证书会导致建立 SSL 传输连接失败,因为客户端会认为服务端是一个非法的服务端,从而导致建立 SSL 安全套接层失败。 客户端建立 SSL 安全套接层以后,会使用商定的密码对消息签名,客户端使用证书加密数据,服务端使用证书解密数据,保证数据的安全和机密性,消息签名防止被篡改。这个链接是唯一的。通信结束以后会关闭连接。 3.4. 传输安全模式之自定义用户名密码身份验 传输安全模式之基本身份验证需要服务器需要一个有效的可用于安全套接字层 (SSL) 的 X.509 证书,并且客户端必须信任此服务器证书。 这里使用 https 协议。客户端提供有效的 UserName 和 Password。 客户端建立 SSL 安全套接层以后,会使用商定的密码对消息签名,客户端使用证书加密数据,服务端使用证书解密数据,保证数据的安全和机密性,消息签名防止被篡改。这个链接是唯一的。通信结束以后会关闭连接。 3.5. 传输安全模式之 Windows 身份验证 Windows 域验证: Kerberos V5 和域控制器 Kerberos V5 服务安装在每个域控制器上,而 Kerberos V5 客户机则安装在每个 Windows Server 2003 工作站和服务器上。 Windows Server 2003 系统使用域名服务(DNS)查询定位最近的可用域控制器。该域控制器则会在用户登录期间对该用户起首选 KDC 的作用。如果首选 KDC 失效,则 Windows 2003 Server 系统将确定由另一个 KDC 提供验证。 Kerberos V5 验证过程是按以下步骤工作的: (1) 客户机中的用户,使用口令或智能卡向 KDC(Key Distribution Center)发出验证请求。 (2) KDC 向客户机发出一个特别的授权票证(Ticket Granting Ticket,简称 TGT)。客户机系统使用该 TGT 访问售票服务(Ticket Granting Service,简称 TGS),它是域控制器中 Kerberos V5 验证机制的一部分。 (3) 然后,TGS 向客户机发布一个服务票证(Service Ticket),客户机使用服务票证来请求网络服务。服务票证用来证明服务和用户的身份。 传输安全模式之 Windows 身份验证需要服务器不需要一个服务器提供有效的可用于安全套接字层 (SSL) 的 X.509 证书。 这里使用 Tcp 协议来保证数据传输安全。客户端提供有效的 Windows 用户名和密码。验证有域服务器完成。 3.6. 传输安全模式之 Certificate 证书身份验证 传输安全模式之 Certificate 证书身份验证需要服务器需要一个有效的可用于安全套接字层 (SSL) 的 X.509 证书,并且客户端必须信任此服务器证书。 这里使用 https 协议。客户端提供有效的 Certificate 证书。 服务器通过证书来检验客户端身份的有效性。 客户端首先要提供自己的证书,服务器对此进行验证,有效后,服务器会和客户端尝试建立 SSL 安全套接层,会使用商定的密码对消息签名,客户端使用证书加密数据,服务端使用证书解密数据,保证数据的安全和机密性,消息签名防止被篡改。这个链接是唯一的。通信结束以后会关闭连接。 3.7. 传输安全模式之自定义 X509Certificate 证书身份验证 传输安全模式之基本身份验证需要服务器需要一个有效的可用于安全套接字层 (SSL) 的 X.509 证书,并且客户端必须信任此服务器证书。 这里使用 https 协议。客户端提供有效的自定义 X509Certificate 证书。 客户端建立 SSL 安全套接层以后,会使用商定的密码对消息签名,客户端使用证书加密数据,服务端使用证书解密数据,保证数据的安全和机密性,消息签名防止被篡改。这个链接是唯一的。通信结束以后会关闭连接。 (1)验证 HTTPS 客户端证书 当使用 HTTPS 在客户端和服务间通信时,客户端用于向服务进行身份验证的证书必须支持链信任。也就是说,它必须链至受信任的根证书颁发机构。否则,HTTP 层将引发 WebExcepti on,并显示消息“远程服务器返回错误: (403) 禁止。”WCF 将此异常包装为 MessageSecurityException。 (2)验证 HTTPS 服务证书 当使用 HTTPS 在客户端和服务间通信时,服务器身份验证使用的证书默认情况下必须支持链信任。也就是说,它必须链至受信任的根证书颁发机构。不会执行任何在线检查来查看证书是否已吊销。可以通过注册 RemoteCertificateValidati onCallback 回调来重写此行为,如以下代码所示。 其中,ValidateServerCertificate 的签名如下:public static bool ValidateServerCertificate( object sender, X509Certificate certificate, X509Chain chai n, SslPolicyErrors sslPolicyErrors)。 实现 ValidateServerCertificate 可以执行客户端应用程序开发人员认为在验证服务证书时有必要进行的任何检查。 3.8. 消息安全模式之匿名客户端身份验 消息安全模式之匿名客户端身份验证需要服务器需要一个有效的可用于 TLS 加密和向客户端验证服务身份的 X.509 证书,并且客户端必须信任此服务器证书。 这里使用 http协议。建议安全上下文以后,使用共享安全上下文对 SOAP 消息进行加密和签名。但是不采用任何客户端身份验证。也就是任何客户端都可以访问此服务。 客户端建立 TLS 安全上下文以后,会使用商定的密码对消息签名,客户端使用证书加密数据,服务端使用证书解密数据,保证数据的安全和机密性,消息签名放置被篡改。 3.9. 消息安全模式之 UserName 客户端身份验证 消息安全模式之 UserName 客户端身份验证需要服务器需要一个有效的可用于 TLS 加密和向客户端验证服务身份的 X.509 证书,并且客户端必须信任此服务器证书。 这里使用htt p 协议。建议安全上下文以后,使用共享安全上下文对 SOAP 消息进行加密和签名。但是采用 UserName 客户端身份验证。也就是客户端提供用户名和密码才可以访问此服务。 客户端建立 TLS 安全上下文以后,会使用商定的密码对消息签名,客户端使用证书加密数据,服务端使用证书解密数据,保证数据的安全和机密性,消息签名放置被篡改。 3.10. 消息安全模式之 NetTcpBinding 客户端身份验证 消息安全模式之 NetTcpBinding 客户端身份验证不需要服务器证书。这里的客户端和服务器的验证由 DC 来完成。 这里使用 TCP 协议。建议安全上下文以后,使用共享安全上下文对 SOAP 消息进行加密和签名。但是采用 Windows 身份验证。也就是客户端提供 Windows域账号和密码才可以访问此服务。 客户端建立 TLS 安全上下文以后,会使用商定的密码对消息签名,保证数据的安全和机密

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论