比较难 如何手工 或编程实现 调用 X.509 certificate 签名的 https WCF Service
2012-11-27 02:47
507 查看
当你在visual studio里 用 add service reference 调用一个只需X.509 certificate 签名 https WCF Service ,visual studio 自动生成一些代码和app.config或者web.config xml代码,基于这些自动生成的东东,很容易调用,但是部署时比较麻烦,得拷贝那些xml代码。
只需X.509 certificate 签名的web service在大公司间常见,我相信支付宝也是用X.509 certificate 签名 https Web service。不知道为什么微软视而不见,没有举例解释,网上也很难搜到。一堆WCF MVP 好像没见过X.509 certificate 签名的web service,抄来抄去抄微软的。微软有个WsHttpBinding,把message加密后又签名,世界上用的不多,因为一般用Https来加密,message加密多此一举。
有哪位高手用WCF实现了X.509 certificate 签名 https Web service的服务器端请告知一下,谢谢!
我搞了很长时间,终于搞懂了手工实现或者 programmatically implement,也就是无需机器生成的config xml代码
主要是给ChannelFactory添加X.509 certificate
service url 是 https://service.uhone.com/QuoteTransfer/QuoteTransfer.svc
只需X.509 certificate 签名的web service在大公司间常见,我相信支付宝也是用X.509 certificate 签名 https Web service。不知道为什么微软视而不见,没有举例解释,网上也很难搜到。一堆WCF MVP 好像没见过X.509 certificate 签名的web service,抄来抄去抄微软的。微软有个WsHttpBinding,把message加密后又签名,世界上用的不多,因为一般用Https来加密,message加密多此一举。
有哪位高手用WCF实现了X.509 certificate 签名 https Web service的服务器端请告知一下,谢谢!
我搞了很长时间,终于搞懂了手工实现或者 programmatically implement,也就是无需机器生成的config xml代码
主要是给ChannelFactory添加X.509 certificate
service url 是 https://service.uhone.com/QuoteTransfer/QuoteTransfer.svc
BasicHttpBinding binding = new System.ServiceModel.BasicHttpBinding(); binding.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.TransportWithMessageCredential; binding.Security.Message.ClientCredentialType = System.ServiceModel.BasicHttpMessageCredentialType.Certificate; EndpointAddress endpoint = new EndpointAddress(url); ChannelFactory<QuoteTransferContract> factory = new ChannelFactory<QuoteTransferContract>(binding, endpoint); factory.Credentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectDistinguishedName, "CN=****"); QuoteTransferContract proxy = factory.CreateChannel(); return proxy.SaveQuoteTransfer(request);
相关文章推荐
- Invoke WCF service from Java Client with Authentication (X.509 Certificate) Java 客户端调用WCF服务 需要安全验证
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- Delphi编程 -- 如何实现一个支持Visual Basic的For Each调用的COM对象
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的?
- WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的?
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 编程实现WCF客户端调用
- 我的WCF之旅(5):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的重载(Overloading)
- Unix环境编程 如何实现dup2函数,不允许调用fcntl?
- Unix编程学习笔记--------系统调用的疑问????? 到底什么是系统调用???? 系统调用是如何实现的???
- Android应用程序四大组件之使用AIDL如何实现跨进程调用Service
- BasicHttpBinding 和 Https 结合,手工编程实现
- Android Service 的使用(五)----如何实现AIDL文件中含有对象的调用
- HttpClient实现HTTPS客户端编程---可信证书与自签名证书
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承
- php编程之如何调用支付宝支付接口的实现
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 如何:实现和调用自定义扩展方法(C# 编程指南)