首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何设置 WCF 安全以要求客户端证书?

在 WCF 中,要求客户端证书的安全设置可以通过以下步骤实现:

  1. 创建自定义绑定:
代码语言:csharp
复制
public static Binding CreateCustomBinding()
{
    X509CertificateRecipientServiceElement recipientServiceElement = new X509CertificateRecipientServiceElement();
    recipientServiceElement.RequireClientCertificate = true;

    CustomBinding customBinding = new CustomBinding();
    customBinding.Elements.Add(new TextMessageEncodingBindingElement());
    customBinding.Elements.Add(new HttpsTransportBindingElement());
    customBinding.Elements.Add(recipientServiceElement);

    return customBinding;
}
  1. 在服务配置文件中添加绑定:
代码语言:xml
复制
<bindings>
 <customBinding>
   <binding name="CustomBinding">
      <textMessageEncoding />
     <httpsTransport />
      <x509CertificateRecipientService requireClientCertificate="true" />
    </binding>
  </customBinding>
</bindings>
  1. 在服务行为配置中添加绑定:
代码语言:xml
复制
<behaviors>
 <serviceBehaviors>
    <behavior name="ServiceBehavior">
     <serviceCredentials>
       <serviceCertificate findValue="MyServiceCertificate" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
       <clientCertificate>
         <authentication certificateValidationMode="ChainTrust" revocationMode="NoCheck" />
        </clientCertificate>
      </serviceCredentials>
     <serviceMetadata httpsGetEnabled="true" />
     <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
  1. 在服务终结点配置中添加绑定:
代码语言:xml<services>
复制
 <service name="MyService" behaviorConfiguration="ServiceBehavior">
   <endpoint address="" binding="customBinding" bindingConfiguration="CustomBinding" contract="IMyService" />
  </service>
</services>

通过以上步骤,可以实现 WCF 的安全设置,要求客户端证书。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

x.509证书WCF中的应用(WebIIS篇)

在上一篇"x.509证书WCF中的应用(CS篇)"里,我们知道了如何在应用程序中,利用x.509证书来验证WCF的消息安全(没看过的朋友建议先看下,地址https://cloud.tencent.com...WCF宿主在IIS和普通应用程序里,原理虽然没什么不同,但在实际测试中发现,如果服务端与客户端都采用x.509证书来验证,服务端设置的自定义验证客户端证书的方法总是不起作用,无奈之下,只能在客户端采用了一种变相的方法来验证客户端证书...项目配置为一个站点(本例为http://localhost/),同时正确安装第一步颁发的服务端证书,同时把"要求安全通道(SSL)"选中,这样站点就必须用https://来访问了 这些都弄好以后...,WebServer"/>在测试中发现总是不起作用,所以只能转而用下面的方式从客户端来验证特定的证书,理论上讲这样有安全隐患,建议实际操作时,可将本节加密后,再连同客户端证书一起分发给客户端,若用于安全性较高的环境...欢迎转载,转载请注明来自cnblogs"菩提树下的杨过" 编后语: 本文演示了如何WCF Host在IIS中,并对服务端和客户端都采用x.509证书方式来验证,当然这种方式要求每个客户端机器上都必须安装服务端颁发的证书

1.1K50

实例演示:TLSSSL在WCF中的应用

如果选择Mixed安全模式,不论选择怎样的客户端凭证类型,WCF最终都会采用TLS/SSL来提供对传输安全的实现。也正是因为如此,在这两种情况下,你总是需要选择一个X.509证书作为服务的凭证。...二、创建基于TLS/SSL的WCF服务 ? 接下来我们会通过一个简单的例子来演示如何WCF服务中使用基于TLS/SSL的Transport安全。...由于TLS/SSL需要通过协商的方式生成一个用于消息签名和加密的会话密钥,而会话密钥的交换依赖一个X.509证书确保安全。...该认证模式要求服务证书的颁发机构链必须在客户端的“受信任根证书颁发机构(Trusted Root Certification Authorities)”。...现在我们先看讨论一下如何通过ClientCredentials来改变客户端对服务证书的认证模式。

1.4K80
  • WCF传输安全(Transfer Security)的基本概念和原理:认证(Authentication)

    一、分布式应用中的传输安全隐患 我们可以将WCF看成是一个消息处理框架,整个框架大体分成两个部分,客户端和服务端。...但是,安全是一个相对“高级”的话题,构建一个适合具体应用要求安全体系对应用的开发和架构人员具有较高的要求。...接下来,我们来简单地介绍一下WCF传输安全体系如何解决上述的这些网络安全隐患。...一个分布式的Web应用为例,我们可以在Web服务器和应用服务器设置防火墙。前者确保Web服务器的安全,使第一道防线。...对于WCF的Windows与之类似,在不考虑模拟(Impersonation)和委托(Delegation)的情况下,WCF客户端安全框架自动将客户端应用进程的Windows凭证,作为调用服务的客户段凭证发送给服务进行认证

    84490

    谈谈WCF客户端认证

    结束了服务认证的介绍之后,我们接着介绍WCF双向认证的另一个方面,即服务对客户端的认证,简称客户端认证。...客户端认证采用的方式决定于客户端凭证的类型,内容只要涉及基于以下三种典型客户凭证类型的认证:Windows、用户名和X.509证书。从编程的角度来讲,Windows认证是最为简单的认证方式。...如果需要另一个Windows帐号的名义调用服务,客户端就需要通知指定Windows帐号和密码的方式显式地进行客户端Windows凭证的设置。...当你进行服务调用的时候,不管你是直接采用ChannelFactory创建服务代理的方式,还是通过导入元数据生成客户端代理的方式,设置Windows凭证都很容易。...WCF集成的Windows认证是基于SSPI(Security Support Provider Interface),这是一套标准的安全编程接口,而具体安全功能的实现定义在相应的SSP(Security

    1K70

    服务凭证(Service Credential)与服务身份(Service Identity)

    在采用TLS/SSL实现Transport安全的情况下,客户端对服务证书实施认证。...但有服务认证确实有一点和客户端认证不同:客户端在对服务进行认证之前就预先确定了服务应当具有的身份。而在真正进行服务调用的时候,客户端要求服务提供相应的凭证。...这也是为何在前面演示的实例中,当NetTcpBinding采用Transport安全模式,客户端凭证被设置成None时,为何需要为服务指定一个X.509证书作为服务凭证的原因。...关于具体对服务证书认证模式的设置在前面的实例演示(《TLS/SSL在WCF中的应用[SSL over TCP]》和《TLS/SSL在WCF中的应用[HTTPS]》)中已经有过介绍了。...当通过第一阶段的认证之后,才会进入第二阶段的认证,即通过比较服务证书和事先确立的服务身份信息进行对照进而确定服务是否是客户端试图访问的服务,接下来讨论关于服务身份的话题。

    1.1K80

    菜菜从零学习WCF三(配置服务)

    在其中可以定义和自定义如何客户端公开服务,包括指定可以找到服务的地址、服务用于发送和接收消息的传输和消息编码,以及服务需要的安全类型。   ...配置绑定   绑定是用于指定连接到Windows Communication Foundation(WCF)服务终结点所必需的通信详细信息的对象。WCF服务中的每个终结点都要求正确指定绑定。   ...还可以通过绑定来设置其他特征,如安全和事务支持。   绑定中的信息可能非常基本,也可能非常复杂。...绑定中的信息可能十分复杂,而且某些设置可能与其他设置不兼容。因此,WCF包含一组系统提供的绑定。这些绑定旨在满足大多数应用程序要求。...binding决定了通讯的类型、 安全如何编码、是否基于session、是否基于事务等等 contract -

    79410

    x.509证书WCF中的应用(CS篇)

    WCF的服务端和客户端之间,如果不作任何安全处理(即服务端的),则所有传输的消息将以明文方式满天飞,在internet/intranet环境下无疑是很不安全的...(当然WCF还有其它安全机制,比如最常见的UserName方式,但通常每次都要从数据库读取用户名/密码信息进行验证,比较麻烦,开销也大,个人觉得还是证书最为方便)--关于x.509证书 的基本知识,可参见...http://www.cnblogs.com/yjmyzz/archive/2008/08/19/1271171.html 大致原理(个人理解,可能不太准确): 正确设置服务端与客户端证书后,WCF的服务端启动时...,需要利用服务端证书验证,如果验证通过将正常启动,否则报异常,同时客户端调用服务端方法时,也需要提供客户端证书,服务端接受到客户端证书后,验证客户端证书的有效性,如果通过,则允许客户端正常调用。...,证书生成好以后,可以在IE里查看到,IE-->工具-->Internet选项-->内容-->证书 同时如何管理已经安装的证书,可参见https://cloud.tencent.com/developer

    74770

    从两种安全模式谈起

    接下来,我从消息交换的角度来说明上述的两个问题是如何通过TLS/SSL解决的。 我们访问一个HTTPS站点为例。...,从中选择一个“最佳”的加密算法),连同绑定到该站点的数字证书(所有HTTPS站点在部署的时候都会绑定一个X.509证书)一并发送给客户端; 步骤三:客户端接收到服务端发回的数字证书之后,通过验证证书进而确定服务身份...在验证成功的情况下,客户端会生成一个随机随机数,作为会话密钥(Session Key),缓存在客户端客户端随后并采用服务端发回的加密算法,利用从证书中提取的公钥进行加密。...WS-Security提供了关于SOAP安全交换的三个主要机制:如何安全令牌作为消息的一部分进行传输,如何检测接收到的消息是否和原始发送的一致,以及如何确保消息的真实内容仅对真正的接收者可见。...我们假设这样一个应用场景:客户端和服务分别采用用户名/密码和X.509证书作为各自的用户凭证,那么针对于每一个单一的消息交换,可以通过下面的方式解决上述两个问题: 客户端采用服务端证书的公钥对消息进行加密

    78680

    快速入门系列--WCF--07传输安全、授权与审核

    因此对于WCF来说,其传输安全主要涉及认证、消息一致性和机密性三个主题,认证不仅包括服务器对客户端的认证,也包括客户端对服务的身份验证,即双向验证,消息一致性保证消息的内容在传输过程中不被篡改,机密性确保只有希望的消息接收方才能读取其中内容...步骤2:HTTPS站点从加密算法列表中选择自己支持的并且安全级别最高的算法,连同绑定到该站点的数字证书(X.509证书)一并发个客户端。...步骤3:客户端接受到站点发回的数字证书后,通过验证证书进而确定站点身份,在验证成功的情况下,客户端会生成一个随机数,作为会话密钥(Session Key),缓存在客户端。...之前介绍的主要是安全概念,接下来则在WCF中,安全的具体实践。...,在客户端可以通过ChannelFactory.Credentials.ClientCertificate.SetCertificate方法设置,此外证书与Windows账号映射可以通过<clientCertificate

    82990

    WinForm企业应用框架设计【二】团队内部的约定和客户端按约定识别WCF服务

    三:安全性问题 如果是安全要求相对较高的领域,比如金融领域 就要仔细考虑到客户端验证的问题 , 1使用数字证书 2在SOAP消息头里加入一串DES密文 3用加密狗启动客户端 4通过硬件串号来识别客户端...当然会根据业务的增加而增加新的模块,不会影响既有框架) 下面看一下程序集的目录结构 2011113022074860.png 2011113022075862.png 当我们的框架设计完成之后 要求编码人员按照约定好的目录结构完成...约定一: 每个模块的代码放到相应的文件夹下去 约定二: WCF服务接口类名必须I开头; WCF服务类名必须Service结尾; 接口类名去掉I字母  ==  服务类名去掉Service结尾 亲~要不然客户端会找不到服务哦...约定三: 实体类名必须Model结尾 窗体类名必须Form结尾 数据库访问类名必须DA结尾 ---- 如果你觉得这些约定实在过于繁琐~ 好吧~随便你~ 二:按约定动态发现WCF服务 有了上面的约定...也就是一个实现了WCF服务接口的实例,我们可以使用这个实例来调用WCF服务 下面我们看看如何调用WCF var factory = new Common.ClientFactory

    58720

    WCF技术我们应该如何以正确的方式去学习掌握

    一、WCF技术我该如何学习?       阿笨的回答是:作为初学者的我们,那么请跟着阿笨一起玩WCF吧,阿笨将带领大家如何以正确的姿势去掌握WCF技术。...二、WCF技术绑定协议(Binding)那么多,那我该如何去学习?...2)、WSHttpBinding: 比 BasicHttpBinding 更加安全。 3)、NetTcpBinding: 效率最高,安全的跨机器通讯方式。...四、WCF技术我们怎么保证客户端调用的安全性? 阿笨的回答是:采用WCF的X509证书身份验证机制。...五、实战演练之C# WCF如何通过优雅的方式进行统一入口调用) 客户端调用WCF服务可以通过添加服务引用的方式添加,这种方式使用起来比较简单,适合小项目使用。

    45820

    菜菜从零学习WCF五(生成客户端)

    紧跟着菜菜从零学习WCF四(承载服务),我们在此节已经在IIS中发布了此项服务。 下面我们先来了解一下,如何来生成客户端吧。...可以使用配置文件配置客户端对象与服务正确连接。 2.创建一个WCF客户端对象。   --WCF客户端是表示某个WCF服务的一个本地对象,客户端可以使用这种表示形式与远程服务进行通信。   ...System.TimeoutException和System.ServiceModel.CommunicationException异常 5.配置和保护客户端   --服务协定的安全要求已在服务协定接口中声明...,并且如果Svcutil.exe已创建了一个配置文件,则该文件通常会包含一个能顾支持服务安全要求的绑定。...但是在某些情况中,可能需要更多的安全配置,例如配置客户端凭据 那么现在我们来创建客户端进行调用发布在IIS中的WCF服务。 第一步我们打开命令工具如下图位置 ? 打开工具后,输入以下指令 ?

    1.1K20

    绑定、安全模式与客户端凭证类型:BasicHttpBinding

    整个安全传输是在WCF的信道层进行的,而绑定是信道层的缔造者,所以终结点采用哪种类型的绑定以及对绑定的属性进行怎样的设置决定了信道层最终采用何种机制实现消息的安全传输。...对于围绕着绑定进行的安全设置,我们首要的任务就是制定采用的安全模式。在安全模式确定之后,客户端凭证的选择决定了认证方最终采用怎样的认证机制。...接下来,我们就来谈谈针对不各种常用的系统预定义绑定,安全模式和基于安全模式的客户端凭证如何设置。先从BasicHttpBinding谈起。...由于Mixed安全模式通过Message模式实现对客户端的认证,所以要求客户端采用基于Message模式的凭证。而除客户端认证的其他安全要素的实现则都是采用Transport模式。...如果能够使用Kerberos,则直接采用Kerberos进行认证,否则才使用NTLM; Certificate:表示客户端的身份通过一个X.509数字证书表示,服务端通过校验证书的方式来确定客户端的真实身份

    1.3K100

    基于Windows用户组的授权方式

    认证和授权密不可分,但是对于认证和授权在WCF安全体系中的实现来说,它们则是相对独立的。认证属于安全传输的范畴,是在信道层实现的,而授权则是在服务模型层实现的。...对于Windows用户组模式来说,有一点是肯定的:不论采用何种客户端凭证类型以及认证模式,最终建立的安全主体都是一个WindowsPrincipal,并且这个WindowsPrincipal对应的安全身份是一个...这里的Windows认证包括如下三种情况: 客户端凭证为Windows凭证; 客户端凭证为用户名/密码凭证,并采用Windows认证模式; 客户端凭证为X.509证书凭证,并允许与Windows帐号进行映射...现在我们对某个服务操作进行授权,要求必须在具有管理员权限才能被调用。在进行服务寄宿的时候,终结点的绑定采用用户名/密码作为客户端凭证,并选择Membership认证模式。...通过前面一篇文章的介绍,我们知道了WCF采用怎样的授权的方式通过ServiceAuthorizationBehavior这一服务行为来控制。所以针对授权的编程主要就体现在对该服务行为的设置

    848100

    快速入门系列--WCF--04元数据和异常处理

    ;WS-Policy策略,通过WS-Policy规范断言的形式对服务能力和特性进行描述。...WCF元数据架构模型:WCF通过终结点的形式将某个服务暴露出来,而元数据可以帮助服务的消费者有效的与该终结点进行交互,实现对该服务的正常调用。...异常的封送(Exception Marshaling):服务端抛出的异常如何进行序列化以便能够传递到客户端。...敏感信息的屏蔽(Sensitive Information Shielding):抛出的异常常常包含敏感信息,直接将服务操作执行过程抛出的异常直接返回客户端,存在较大安全隐患。...系统的集成和互操作:基于不同厂商和技术平台系统之间的有效继承和互操作也给异常处理提出了新的要求要求异常消息的标准化。

    81080

    WCF技术剖析之三十二:一步步创建一个完整的分布式事务应用

    在完成了对于WCF事务编程(《上篇》、《中篇》、《下篇》)的介绍后,本篇文章将提供一个完整的分布式事务的WCF服务应用,通过本例,读者不仅仅会了解到如何编程实现事务型服务,还会获得其他相关的知识,比如DTC...如果读者在运行该实例的时候,两个主机的DTC没有进行合理的设置,将不会成功运行,现在我们简单介绍一下如何进行DTC的设置。...你可以对DTC的跟踪(Trace)方式、日志记录、安全和WS-AT进行相应的设置。在这里要是DTC在本实例中可用,重点是对“安全”进行正确的设置。...DTC的WS-AT可以借助WS-AT配置工具wsatConfig .exe命令行的方式进行设置,该工具位于"%WINDIR%\Microsoft.NET\Framework\v3.0\Windows...然后,我们针对主机Foo和Bar分别进行如下的设置,使之建立相互信任关系: Foo:选择证书Foo(CN=Foo)和Bar(CN=Bar)分别作为终结点证书(Endpoint certificate

    66780

    从两个重要的概念谈起:Identity与Principal

    为了让适合的人干适合的事,就需要授权机制为具体的人设置具体的权限,并根据这些权限设置决定试图调用的操作或者访问的资源对该访问者是否是安全的。对于一个安全保障体系来说,授权是目的。...但是对于证书认证,则对应着另一种安全身份类型:X509Identity。...我们可以通过传入一个X509Certificate2对象或者X500DistinguishedName对象表示的证书的标识名称来创建X509Identity。...不过需要注意的是,这是所说的Windows认证实际上包括如下三种情况: 客户端凭证为Windows凭证; 客户端凭证为用户名/密码凭证,并采用Windows认证模式; 客户端凭证为X.509证书凭证...如果客户端凭证为X.509证书凭证,但不采用Windows帐号映射机制,则PrimaryIdentity的属性返回的是一个X509Identity。

    739100

    WCF,Net remoting,Web service

    3、安全与可信赖 WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,用于用户认证,数据完整性验证,数据隐私等多种安全因素。...传输协议和主机进程 尽管 SOAP 规范并不要求用 HTTP 作为传输协议,但是客户端只能通过 HTTP 访问使用 ASP.NET Web 服务实现的 Web 服务,因为它是 ASP.NET 支持的唯一一种传输协议...ASP.NET 利用 IIS 的安全性功能,为标准 HTTP 验证方案(包括基本、简要、数字证书,甚至 Microsoft? .NET Passport)提供了强有力的支持。...如果要在不完全信任的环境中使用 .NET Remoting 客户端,则需要更改从那些区域中加载的代码的默认安全性策略。...另外,客户端每次调用 ASP.NET Web 服务时,都创建一个新的对象服务于该请求。方法调用完成后,该对象即被破坏。

    1.4K50
    领券