zoukankan      html  css  js  c++  java
  • WCF NetTcpBinding Transport安全模式(9) ClientCredentialType证书验证模式Custom验证模式

    WCF NetTcpBinding Transport安全模式(9)    ClientCredentialType证书验证模式----Custom验证模式

       Custom验证模式提供了更灵活可定制证书验证方式,当需要自定义验证时候,可以采用这种方式。以下代码是修改客户端验证为“Custom”模式后相关配置。

    设置客户端对服务端凭据验证模式为“Custom”:

        <serviceCertificate >

           <authentication certificateValidationMode="Custom"  

                  customCertificateValidatorType="WcfSecurityExampleServiceLibrary.MyX509CertificateValidator,

                  WcfSecurityExampleServiceLibrary" />

                </serviceCertificate>

    如以上代码所示,配置“Custom”验证模式需要指定自定义验证程序,本例中类型为“WcfSecurityExampleServiceLibrary.MyX509CertificateValidator”,名称空间为“WcfSecurityExampleServiceLibrary”,实现代码如代码清单11-25所示。

    代码清单11-24    自定义验证程序

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;    

    using System.IdentityModel.Selectors;

     

    namespace WcfSecurityExampleServiceLibrary

    {

        public class MyX509CertificateValidator : X509CertificateValidator

        {

            public override void Validate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate)

            {

                if (certificate.SerialNumber.ToLower() != "9414bfe12286dc874b631a702c7d2ad9")

                    throw new Exception("Certificate  Error!");

            }

        }

    }

    以上代码给出了一个最简单实现自定义验证示例。首先,实现自定义验证程序类必须要继承X509CertificateValidator抽象类,然后根据实际情况重写Validate方法。本例中,简单地判断服务端证书序列号是否符合预期。初始情况下,要验证序列号和服务端证书序列号不符,运行结果如图11-19所示。

    图11-14        自定义验证异常

    从图11-19中可以看出,当服务端证书序列号和自定义验证程序要求不一致时候,抛出了自定义异常信息。下面将自定义验证程序预期序列号调整为何服务端证书一致,运行结果如图11-20所示。

    图11-15        正确自定义验证

     

    --------------注:本文部分内容改编自《.NET 安全揭秘》


    作者:玄魂
    出处:http://www.cnblogs.com/xuanhun/
    原文链接:http://www.cnblogs.com/xuanhun/ 更多内容,请访问我的个人站点 对编程,安全感兴趣的,加qq群:hacking-1群:303242737,hacking-2群:147098303,nw.js,electron交流群 313717550。
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    关注我:关注玄魂的微信公众号

  • 相关阅读:
    jQuery 复选框全选反选
    JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的 开源 Java EE快速开发平台
    SpringMVC+MyBatis(最新)
    基于Maven构建整合SpringMVC+Mybtis+Druid
    alibaba的FastJson(高性能JSON开发包)
    JAVA中使用JSON进行数据传递
    java 发送http json请求
    JDK中的URLConnection参数详解
    java调用Http请求 -HttpURLConnection学习
    Jquery调用webService的四种方法
  • 原文地址:https://www.cnblogs.com/xuanhun/p/2560105.html
Copyright © 2011-2022 走看看