WCF basicHttpBinding之Message Security Mode

王朝学院·作者佚名  2016-05-21
窄屏简体版  字體: 小  |  中  |  大  |  超大  

WCF basicHttpBinding之Message Security Mode原创地址:http://www.cnblogs.com/jfzhu/p/4067873.html

转载请注明出处

前面的文章《WCF Security基本概念》介绍了WCF的security mode,简单说Transport是transport级别上的加密,Message是message级别上的加密,参见下图:

Transport Security

Message Security

(一)Demo代码IDemoService.cs:

using System.ServiceModel;namespace WCFDemo{ [ServiceContract(Name = "IDemoService")] public interface IDemoService { [OperationContract] [FaultContract(typeof(DivideByZeroFault))] int Divide(int numerator, int denominator); }}

DemoService.cs:

using System;using System.ServiceModel;using System.ServiceModel.Activation;namespace WCFDemo{ [aspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class DemoService : IDemoService { public int Divide(int numerator, int denominator) { try { return numerator / denominator; } catch (DivideByZeroException ex) { DivideByZeroFault fault = new DivideByZeroFault(); fault.Error = ex.Message; fault.Detail = "Denominator cannot be ZERO!"; throw new FaultException<DivideByZeroFault>(fault); } } }}

(二)创建证书basicHttpBinding使用Message Security mode时,credential type只能为Certificate(参见《WCF Security基本概念》)

在服务器上创建服务器端证书。

属性解析

-sr 指定的证书存储区中的注册表位置。

currentUser 指定注册版存储位置为 HKEY_CURRENT_USER. localMachine 指定注册版存储位置为 HKEY_LOCAL_MACHINE.

-ss 指定证书存储的位置。

-a 指定相关的算法,可以选择 md5 算法或者 SHA1算法

-n 指定证书的名称。该名称遵循X.500命名标准。简单例子如 "CN=MyName" 格式,如果没有指定/n开关,证书默认的名称是"Joe's Software Emporium"。

-sky 证书键类型。可以设置为 exchange 或者 signature。

-pe 证书可导出

-r Self-signed Certificate

证书创建成功,下面在证书控制单元查看证书的信息

选择Certificates –> Add

需要给IIS运行WCF Service的application Pool的帐号对这个证书私钥的读权限(参考《IIS ApplicationPoolIdentity》)

否则会报出以下错误

将服务器端的证书导出,然后导入到客户端。

从服务器导出证书:

将导出的证书复制到客户端,然后导入:

QQ2euiwv5z0.png" alt="image" width="4

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航