·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> 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
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 指定的证书存储区中的注册表位置。
-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》)
否则会报出以下错误
将服务器端的证书导出,然后导入到客户端。
从服务器导出证书:
将导出的证书复制到客户端,然后导入: