博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF 安全性 之 自定义证书验证
阅读量:6240 次
发布时间:2019-06-22

本文共 2651 字,大约阅读时间需要 8 分钟。

案例下载

客户端调用代码 通过代理类

代理生成 参见

X509证书创建

服务端配置代码

服务端自定义证书验证类

namespace WcfServiceLibrary1{    public class MyX509Validator : System.IdentityModel.Selectors.X509CertificateValidator    {        public override void Validate(X509Certificate2 certificate)        {            if (!certificate.Thumbprint.Equals("B9DF5B912B8CF8EAB07A7BB9B0D17694522AB0CE", StringComparison.CurrentCultureIgnoreCase))            {                throw new SecurityTokenException("Unknown Certificate");            }        }    }}

客户端调用代码

private void btnTest_Click(object sender, EventArgs e)        {            //Service1Client client = new Service1Client();            //txtMessage.Text = client.GetDataUsingDataContract(new WcfServiceLibrary1.CompositeType() { StringValue = "sssss" }).StringValue;                         NetTcpBinding binding2 = new NetTcpBinding();            binding2.Security.Mode = SecurityMode.Transport;            binding2.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;            binding2.Security.Message = new MessageSecurityOverTcp() { ClientCredentialType = MessageCredentialType.Certificate };            EndpointAddress endpoint = new EndpointAddress(new Uri("net.tcp://localhost:8731/WcfServiceLibrary"),              EndpointIdentity.CreateDnsIdentity("TestServer"));            ChannelFactory
factory = new ChannelFactory
(binding2, endpoint); factory.Credentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "TestServer"); IService1 client = factory.CreateChannel(); txtMessage.Text = client.GetDataUsingDataContract(new WcfServiceLibrary1.CompositeType() { StringValue = "sssss" }).StringValue; //B9DF5B912B8CF8EAB07A7BB9B0D17694522AB0CE }

 

转载于:https://www.cnblogs.com/woxpp/p/6232333.html

你可能感兴趣的文章
footer绝对定位但是不在页面最下边解决方案
查看>>
Oil Deposits(油田)(DFS)
查看>>
Android 画图(自定义坐标轴控件的拖动实现)
查看>>
在Linux下配置git并设置远程仓库
查看>>
[解题报告]499 - What's The Frequency, Kenneth?
查看>>
Vue入门---常用指令详解
查看>>
iOS 越狱后 SSH 不能连接
查看>>
soj 3291 Distribute The Apples II DP
查看>>
苹果App Store审核指南中文翻译(更新至140227)
查看>>
转 -- OK6410 tftp下载内核、文件系统以及nand flash地址相关整理、总结
查看>>
原来对MFC一无所知
查看>>
Java程序员看C++代码
查看>>
python处理Excel - xlrd xlwr openpyxl
查看>>
JS实现的购物车
查看>>
bzoj 3998 [TJOI2015]弦论——后缀自动机
查看>>
STL 的 vector 根据元素的值来删除元素的方法
查看>>
NOI2002银河英雄传说——带权并查集
查看>>
复合数据类型,英文词频统计
查看>>
“main cannot be resolved or is not a field”解决方案
查看>>
oc中使用switch实现图片浏览功能,补充其它的实现方式
查看>>