·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> WCF basicHttpBinding之Message Security Mode

WCF basicHttpBinding之Message Security Mode

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

WCF basicHttpBinding之Message Security Mode

原创地址:http://www.cnblogs.com/jfzhu/p/4067873.html

转载请注明出处

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

Transport Security

image

Message Security

image

(一)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基本概念》)

312317464879122

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

image

属性解析

-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

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

image

image

选择Certificates –> Add

image

image

image

image

image

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

image

否则会报出以下错误

image

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

从服务器导出证书:

image

image

image

image

image

image

image

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

image

image

image

  • 上一篇文章:
  • 下一篇文章: