当前位置: 首页 > 知识库问答 >
问题:

WCF W/相互认证

嵇财
2023-03-14

我试图帮助解决一个用WCF编写的需要相互身份验证的第三方自托管web服务的故障。问题是web服务返回一个未经授权的401。我读过几篇文章,介绍如何在WCF中编写客户机和服务器部分以使用相互身份验证,但我仍然有以下问题:

配置文件具有以下内容:

<bindings>
  <webHttpBinding>
    <binding name="webHttpTransportSecurity">
      <security mode="Transport">
        <transport clientCredentialType="Certificate" />
      </security>
    </binding>
  </webHttpBinding>
</bindings> 

我认为这足以表明客户端应该使用证书进行身份验证,但现在服务如何决定该证书是否是允许的证书呢?

共有1个答案

宓弘壮
2023-03-14

您的绑定定义看起来正确。证书在EndpointBehaviors中定义。它有点难以遵循,因为它被拆分为不同的XML组。

下面是一个对我的项目有效的例子:

<client>
  <endpoint address="(address to our)WebService.svc"
            behaviorConfiguration="behaviorConfig"
            binding="webHttpTransportSecurity"
            bindingConfiguration="bindingConfig"
            contract="((your contract name))"
            name="mainEndPoint">
    <identity>
      <certificateReference findValue="CN=((cert name like blah.blah.blah-blah.blah)), OU=((lookup)), O=((lookup))"
                            storeLocation="LocalMachine"
                            storeName="TrustedPeople"
                            x509FindType="FindBySubjectDistinguishedName" />
    </identity>
  </endpoint>
</client>
<bindings>
  <!-- you already have a good looking binding (above) -->
</bindings>
<behaviors>
  <serviceBehaviors ...etc  />
  <endpointBehaviors>
    <behavior name="behaviorConfig">
      <clientCredentials>
        <clientCertificate findValue="CN=((short name)), OU=((lookup)), O=((lookup))"
                           storeLocation="LocalMachine"
                           storeName="My"
                           x509FindType="FindBySubjectDistinguishedName" />
        <serviceCertificate>
          <defaultCertificate findValue="CN=((same content from certificateReference above)), OU=((lookup)), O=((lookup))"
                              storeLocation="LocalMachine"
                              storeName="TrustedPeople"
                              x509FindType="FindBySubjectDistinguishedName" />
          <authentication certificateValidationMode="PeerTrust"
                          revocationMode="NoCheck"
                          trustedStoreLocation="LocalMachine" />
        </serviceCertificate>
      </clientCredentials>
      <callbackTimeouts />
    </behavior>
  </endpointBehaviors>
</behaviors>
 类似资料:
  • 如果没有,我如何在使用Apache服务器的应用程序中配置SSL/TLS相互身份验证,以便它可以要求一个客户端证书,并从这个证书中提取公钥?

  • 我在tomcat 8上部署了一个web应用程序,它使用来自两个不同系统的web服务,每个系统都需要相互验证。现在我需要将我的应用程序与两个不同的客户端证书集成,或者我们可以说两个不同的密钥存储库使用不同的密码。现在,我很难为这两项服务使用正确的证书。 我使用自己的代码调用其中一个服务,但第二个服务是从第三方库调用的,我无法控制其调用者代码。如果我使用任何一个密钥库,则相应的服务调用成功,但另一个失

  • 在不限制客户端证书的情况下,TLS中的相互身份验证有什么用? 以下是我对使用TLS的客户端/相互身份验证的理解。 现在rfc5246表示如下 这不会实现任何身份验证正确吗?例如,如果我有一个服务器信任由世界各地受信任的CA签署的任何证书,那么为什么还要费心于客户端身份验证呢?

  • 我正在尝试为相互身份验证设置ActiveMQ,以便客户端需要证书才能将消息传递给代理。我在代理上创建了一个密钥库和一个信任库,并导出了一个复制到客户端的证书。在客户端,我也做了同样的事情,尽管我使用的是NMS,所以我只使用导出的证书,我将其添加到代理的信任库中。我还将证书添加到另一个本地计算机可信根证书中。 代理的配置如下: ${activemq.base}/conf/login.config $

  • 接口认证相关 接口验证 — 概述 通过CC视频云课堂登录接口验证,客户的用户系统可对观看直播的用户进行鉴权 验证接口由客户进行开发,在学员登录时,由CC视频云课堂 将登录信息提交给该接口验证用户身份信息。 接口地址 创建直播间时,验证方式选择接口验证并填写接口地址 例:老师端publisher_authtype为0 在publisherpass填写该接口地址 请求方式 POST(Form表单)

  • 问题内容: 在中,我使用或计算成对互相关函数,以便找出哪个偏移使我获得了最大值。从它的外观来看,给了我一个规范化的值序列。Python的scipy中是否有类似的东西,还是应该使用该模块?目前,我正在执行以下操作: 问题答案: 要使一维数组互相关,请使用numpy.correlate。 对于2d数组,请使用scipy.signal.correlate2d。 还有scipy.stsci.convolv