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。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
关注我:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)