案例下载

http://download.csdn.net/detail/woxpp/4113172

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

代理生成 参见

http://www.cnblogs.com/woxpp/p/6232298.html

X509证书创建

http://www.cnblogs.com/woxpp/p/6232325.html

服务端配置代码

  <system.serviceModel><services><service name="WcfServiceLibrary1.Service1" behaviorConfiguration="CustomBehavior"><host><baseAddresses><add baseAddress="http://localhost:8732/WcfServiceLibrary"/></baseAddresses></host><!-- Service Endpoints --><!-- 除非完全限定,否则地址将与上面提供的基址相关 --><endpoint address="net.tcp://localhost:8731/WcfServiceLibrary" binding="netTcpBinding" bindingConfiguration="TestNetTcpBinding" contract="WcfServiceLibrary1.IService1"><!-- 部署时,应删除或替换下列标识元素,以反映用来运行所部署服务的标识。删除之后,WCF 将自动推断相应标识。--><identity><dns value="localhost"/></identity></endpoint><!-- Metadata Endpoints --><!-- 元数据交换终结点供相应的服务用于向客户端做自我介绍。 --><!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除--><endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /></service></services><bindings><netTcpBinding><binding name="TestNetTcpBinding"><security mode="Transport"><transport clientCredentialType="Certificate"/><message clientCredentialType="Certificate"/></security></binding></netTcpBinding></bindings><behaviors><serviceBehaviors><behavior name="CustomBehavior"><!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点  --><serviceMetadata httpGetEnabled="True"/><!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息--><serviceDebug includeExceptionDetailInFaults="False" /><serviceCredentials><serviceCertificate findValue="TestServer" storeName="My" storeLocation="CurrentUser" x509FindType="FindBySubjectName"/><clientCertificate><authentication certificateValidationMode="Custom" customCertificateValidatorType="WcfServiceLibrary1.MyX509Validator,WcfServiceLibrary1"/></clientCertificate></serviceCredentials></behavior></serviceBehaviors></behaviors></system.serviceModel>

服务端自定义证书验证类

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<IService1> factory = new ChannelFactory<IService1>(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

WCF 安全性 之 自定义证书验证相关推荐

  1. WCF分布式安全开发实践(6):传输安全模式之自定义X509Certificate证书验证

    今天继续WCF分布式安全开发实践(6):传输安全模式之自定义X509Certificate证书验证.本文介绍的内容主要是:主要是传输安全模式的UserNamePassword身份验证方式,基于WSHt ...

  2. 如何为WCF应用添加X509证书和安全验证

    一.首先用Visual Studio 命令提示创建证书 makecert -sr LocalMachine -ss My -a sha1 -n CN=Webabcd -sky exchange -pe ...

  3. WCF NetTcpBinding Transport安全模式(6) ClientCredentialType证书验证模式---- PeerTrust验证模式...

    WCF NetTcpBinding Transport安全模式(6)   ClientCredentialType证书验证模式---- PeerTrust验证模式 当证书验证模式设置为"Pe ...

  4. Android 根证书管理与证书验证

    PKI 体系依赖证书执行极为关键的身份验证,以此确认服务端的可信任性.证书验证在 SSL/TLS 握手过程中完成,验证过程通常包含三个步骤: 验证证书的合法性:这一步主要是验证证书是由合法有效的 CA ...

  5. 密码学专题 证书和CA指令 申请证书|建立CA|CA操作|使用证书|验证证书

    Req指令介绍 功能概述和指令格式 req指令一般来说应该是提供给证书申请用户的工具,用来生成证书请求以便交给CA验证和签发证书.但是,OpenSSL的req指令的功能远比这样的要求强大得多,它不仅可 ...

  6. WCF安全之X509证书

    概述 Windows Communication Foundation (WCF) 是 Microsoft 为构建面向服务的应用程序而提供的统一编程模型(摘自MSDN),在分布式环境下的安全问题尤为重 ...

  7. 从零开始学WCF(14)WCF安全性概述

    安全性概述 常见的安全威胁: 1) 观测网络流量以获取敏感信息.以在线银行为列,某个客户端请求将资金从一个账户转账到另一个账户.一个恶意用户截获了此消息(具有账号和密码),随后从盗用的账户将资金转出. ...

  8. SQL Server数据库镜像部署 错误1418’处理及证书验证

    SQL Server数据库镜像部署 '数据库镜像'是SQLServer数据库功能最强的一种热备份方法,也是环境要求最高的一种.其配置环节比较麻烦,本人新手研究了三天,中途遇到了许多问题,希望其他第一次 ...

  9. python 指定证书验证_如何在python中验证SSL证书?

    我需要验证我的自定义CA签署了证书.使用OpenSSL命令行实用程序很容易做到: # Custom CA file: ca-cert.pem # Cert signed by above CA: bo ...

最新文章

  1. [Android]ListView性能优化之视图缓存
  2. [原] 64位win7编译OpenCV SVN版本
  3. qt高亮快捷键_QtCreator中常用快捷键总结
  4. 牛客网(剑指offer) 第十一题 二进制中1的个数
  5. tcp unity 图片_Unity 简易聊天室(基于TCP)(2)
  6. yii2 html编辑器,浅析Yii2集成富文本编辑器redactor实例教程
  7. Jsvm2 与 prototype.js 组合 應用心得
  8. mac android 找不到设备管理器,Android Studio找不到连接设备解决方案
  9. return 1 或 return 0 的作用
  10. wpf-容易误解的Image
  11. python如何打开文件选择框_python文件选择对话框的操作方法
  12. 淘宝商品关键词搜索排名查询
  13. 计算机提示应用程序无法启动,电脑应用程序无法正常启动提示0x000007b怎么办?...
  14. OceanBase 之 OBCA考试总结
  15. 现阶段有哪些方式可以快速感知元宇宙?
  16. CDN加速的作用以及APP被渗透入侵的解决方案
  17. 如何做一场有创意的活动策划?
  18. 巧用天翼云盘备份云主机数据
  19. 基于关系型代数的 SQL 等价改写
  20. 四大金刚 数据结构_学习JavaScript数据结构与算法(三):集合

热门文章

  1. python以二进制读取的文件显示b'b'_python - Python读取二进制文件并解码 - 堆栈内存溢出...
  2. centos安装mysql8_Docker 快速安装 Mysql
  3. 文章页网址有.html,Phpcms V9文章内容页自定义HTML网址技巧
  4. java strim性能_Java代码性能优化总结
  5. Java c语言词法,c语言写的Java词法分析
  6. 10kv开关柜价格_常用变压器、开关柜介绍、厂家联系方式、报价单分享
  7. shell按照时间排序_【经典排序】希尔排序
  8. linux watch
  9. Java SringBoot demo
  10. 在linux环境下模拟实现简单命令解释器_git bash 竟然不支持 tree 命令