WCF服务端安全实现技巧剖析

开发 开发工具
我们在这篇文章中将会为大家详细介绍一下WCF服务端安全的相关实现方法。主要是通过一段代码的解读来为大家剖析其中应用技巧。

WCF作为一款功能强大的开发工具给我们带来了非常不一样的使用体验。它的安全性方面是非常重要的。在这里我们将会为大家详细介绍一下WCF服务端安全的相关应用知识,方便大家理解这方面的内容。

先来看一个最简单的加法运算通过WCF来实现。 

namespace Contract  
{  
[ServiceContract]  
public interface IService  
{  
[OperationContract]  
int add(int a, int b);  
}  
}  
public class Service:Contract.IService  
{  
IService 成员#region IService 成员  
public int add(int a, int b)  
{  
return a + b;  
}  
#endregion  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

WCF服务端安全的配置文件如下:

< system.serviceModel> 
< behaviors> 
< serviceBehaviors> 
< behavior name="ServiceBehavior"> 
< serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" /> 
< /serviceBehaviors> 
< /behaviors> 
< services> 
< service behaviorConfiguration="ServiceBehavior" 
name="Service.Service">  < endpoint binding="wsHttpBinding" contract="Contract.IService" />  < host>  < baseAddresses>  < add baseAddress="http://localhost:123/service" />  < /baseAddresses>  < /host>  < /service>  < /services>  < /system.serviceModel> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

OK,至此我们已经建立了一个WCF的加法运算。下一步我将讲解如何为建立好的应用程序加入安全机制。我们可以通过在服务器端配置证书来加密和解密传输数据来保证数据的完整性和机密性。我们来为服务器配置证书。由于我在这里只做Demo演示,证书可以通过markcert.exe命令来完成,如果作为企业应用的话,请到CA申请受信任的证书。证书的介绍和制作方法在我以前写过的Blogs上可以看到。在WCF中可以通过将上述步骤中生成的证书以配置文件的方式添加到WCF的配置文件中,就可以实现WCF服务端安全,以及数据在传输中的加密和解密了。服务器端配置文件添加如下内容

< serviceCredentials> 
< clientCertificate> 
< authentication certificateValidationMode="None" /> 
< /clientCertificate> 
< serviceCertificate findValue="Guotai.WeighingSystem.ServerCA" 
storeLocation="CurrentUser" x509FindType="FindBySubjectName" />  < /serviceCredentials> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

同样在客户端添加以下节点:

< endpointBehaviors> 
< behavior name="NewBehavior"> 
< clientCredentials> 
< serviceCertificate> 
< authentication certificateValidationMode="None" /> 
< /serviceCertificate> 
< /clientCredentials> 
< /behavior> 
< /endpointBehaviors> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

请注意serviceCertificate节点,由于我们建立的证书只是用来测试用,不受信任的,因此将证书验证模式设为:None,否则程序运行时报错。OK,现在我们已经实现了数据完整性和数据机密性。有兴趣的朋友,可以用Service Trace Viewer这个工具来将WCF在数据传输中所记录的日志文件打开,如果WCF服务端安全配置了以上的安全措施,那么在这个工具中可以看到WCF传输过程中的数据都是以密文的方式传输的。

【编辑推荐】

  1. WCF ABC实质内容介绍
  2. WCF Message类应用基础讲解
  3. WCF自定义过滤器相关实现方法简介
  4. WCF物理地址如何进行正确设定
  5. 两种WCF地址详细对比
责任编辑:曹凯 来源: 博客园
相关推荐

2011-09-09 09:44:23

WCF

2009-12-07 17:28:55

WCF数据

2010-02-22 16:26:47

WCF传输数据

2009-11-05 15:25:36

WCF服务端配置

2009-11-09 13:31:09

WCF服务端配置

2016-08-04 14:41:21

架构java服务端开发

2010-02-25 13:40:17

WCF禁用安全配置

2012-04-20 10:05:16

WCF

2010-02-24 12:49:39

WCF枚举

2009-11-05 13:00:25

WCF客户端

2024-11-21 15:48:50

2016-03-18 09:04:42

swift服务端

2010-02-24 16:17:09

WCF获取客户端IP

2009-08-21 15:36:41

服务端与客户端

2009-08-21 15:54:40

服务端与客户端

2020-04-27 08:07:16

APP服务端通信安全数据安全

2009-12-21 10:09:26

WCF创建客户端服务对

2009-12-21 15:53:56

WCF获取客户端IP

2010-05-28 10:10:49

2010-02-24 11:22:04

WCF方法重载
点赞
收藏

51CTO技术栈公众号