ClientCredentialType证书验证模式----Custom验证模式
Custom验证模式提供了更灵活的可定制的证书验证方式,当需要自定义验证的 时候,可以采用这种方式。以下代码是修改客户端验证为“Custom” 模式后的相关配置。
设置客户端对服务端凭据验证模式为“Custom”:
<serviceCertificate > <authentication certificateValidationMode="Custom" customCertificateValidatorType="WcfSecurityExampleServiceLibrary.M yX509CertificateValidator, WcfSecurityExampleServiceLibrary" /> </serviceCertificate>
如以上代码所示,配置“Custom”验证模式需要指定自定义的验证 程序,本例中类型为 “WcfSecurityExampleServiceLibrary.MyX509CertificateValidator&rdqu o;,名称空间为“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所示。
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/net/
图11-14 自定义验证异常
从图11-19中可以看出,当服务端的证书序列号和自定义验证程序要求的不一 致的时候,抛出了自定义的异常信息。下面将自定义验证程序的预期序列号调整 为何服务端证书一致,运行结果如图11-20所示。
图11-15 正确的自定义验证
作者:玄魂
出处:http://www.cnblogs.com/xuanhun/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索验证
, 序列模式
, 代码
, 序列号
, 证书
, system
, 模式
System.IdentityModel
wcf nettcpbinding、wcf binding、wcf wshttpbinding、wcf binding类型、wcf basichttpbinding,以便于您获取更多的相关知识。