【问题标题】:WCF custom certificate validation with BasicHttpBinding使用 BasicHttpBinding 进行 WCF 自定义证书验证
【发布时间】:2010-06-11 00:27:51
【问题描述】:

我有一个托管在 IIS 6 上的 WCF 应用程序,需要

  1. 具有 2 路 SSL 身份验证
  2. 使用一些客户端主机信息验证客户端证书内容
  3. 验证客户端证书由有效的子 CA 颁发。

我能够成功地做到 1)。我试图通过遵循this 来实现 2) 和 3) - 基本上创建一个继承 X509CertificateValidator 的类并用我自己的验证实现(步骤 2 和 3)覆盖 Validate 方法。我完全按照 MSDN 的说明进行操作,但似乎没有调用 Validate 方法。我故意在覆盖的 Validate 方法中抛出 SecurityAccessDeniedException ,当我尝试通过浏览器访问服务时没有抛出异常。我仍然可以使用任何客户端证书访问我的网站。

我也读过this thread,但它并没有真正帮助。任何帮助将不胜感激!

这是我的配置:

<system.serviceModel>
<services>
  <service behaviorConfiguration="SimpleServiceBehavior"
           name="SampleNameSpace.SampleClass">
    <endpoint address=""
              binding="basicHttpBinding"
                  bindingConfiguration="NewBinding0"
                  contract="SampleNameSpace.ISampleClass" />
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="SimpleServiceBehavior">
      <serviceMetadata httpsGetEnabled="true" policyVersion="Default" />
      <serviceCredentials>
        <clientCertificate>
            <authentication certificateValidationMode="Custom" customCertificateValidatorType="SampleNameSpace.MyX509CertificateValidator, SampleAssembly"/>
          </clientCertificate>
        </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <basicHttpBinding>
    <binding name="NewBinding0">
      <security mode="Transport">
        <transport clientCredentialType="Certificate" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

【问题讨论】:

  • 我正在经历类似的事情。在一个环境中它可以工作,但在另一个 BIG-IP 负载平衡环境中它会忽略 Validate 方法。

标签: c# .net wcf wcf-security


【解决方案1】:

您也可以尝试使用此ServerCertificateValidationCallback 覆盖证书验证

我们以这种方式将它与 WCF HttpBinding 一起使用:

System.Net.ServicePointManager.ServerCertificateValidationCallback = 
     (sender, certificate, chain, policyErrors) => 
     {
        var isValid = false;
        // some checking logic
        return isValid;
     };

【讨论】:

    猜你喜欢
    • 2015-05-27
    • 2012-10-24
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 2014-07-04
    • 2010-12-06
    • 2019-07-22
    • 1970-01-01
    相关资源
    最近更新 更多