繁体   English   中英

使用BasicHttpBinding进行WCF自定义证书验证

[英]WCF custom certificate validation with BasicHttpBinding

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

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

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

我也读过这个帖子,但它并没有真正帮助。 任何帮助将不胜感激!

这是我的配置:

<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>

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM