WCF学习笔记之传输安全
2013-08-12 10:55
357 查看
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安全(4) 集成window身份验证 (netTCP)
- 学习笔记之 WCF安全(3) 数字证书+ 自定义验证(wshttpBinding)
- 【安全牛学习笔记】基本工具-NETCAT(telnet/banner、传输文本信息)
- 【安全牛学习笔记】DNS区域传输、DNS字典爆破、DNS注册信息
- 学习笔记之 WCF安全(5) 数字证书+ 客户端证书验证(wshttpBinding)
- 学习笔记之 WCF安全(6) 数字证书 自定义证书验证+ 客户端 证书验证(wshttpBinding)
- WCF学习笔记(六)自定义绑定和C/S之间传输流的绑定
- 学习笔记之 WCF (自定义SoapHeader,做安全)
- 学习笔记之 WCF安全(1) SSL安全,无客户端验证(wsHttpBinding)
- 学习笔记之 WCF安全(2) 基本身份验证(windows账号密码)(wsHttpBinding)
- [WCF 学习笔记] 8. 数据传输
- 黑马程序员 学习笔记六:线程间的通信以及通信安全问题
- 【NDN安全】Mitigating Distributed Denial-of-Service Attacks in Named Data Networking 学习笔记
- APP安全漏洞学习笔记
- 【安全牛学习笔记】http协议基础
- live555学习笔记9-h264 RTP传输详解(1)
- Linux运维学习笔记之四:安装后的基本调优及安全设置(系统基础优化)
- 信息安全论学习笔记(二):密码学基础