仅限服务的WCF证书身份验证(无客户端证书)

时间:2012-04-30 15:12:02

标签: c# wcf authentication x509certificate nettcpbinding

我目前正在使用带有Windows身份验证的netTcpBinding(用C#编写的程序)。我将远离域身份验证(添加不在域上的新客户端),并希望使用用户名/通过身份验证设置证书安全性。从我到目前为止所阅读的内容来看,我不一定需要客户端证书(这很好;我将无法在每个客户端上安装服务证书)。我的想法与使用来自可信CA的证书导航到安全网站的路线相同;它承认它是值得信赖的,不会问任何问题或给任何麻烦,它只接受证书!

到目前为止,我已经设置了服务证书(我们有来自GoDaddy的通配符证书),但是我无法弄清楚我必须对app.config文件做出哪些更改以不需要客户端证书

服务app.config:

<serviceBehaviors>
   <behavior name="">
     <serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
     <serviceDebug includeExceptionDetailInFaults="false" />
     <serviceCredentials>
       <clientCertificate>
         <authentication certificateValidationMode="None" revocationMode="NoCheck" />
       </clientCertificate>
       <serviceCertificate findValue="*.xxxxxx.com"
                           storeLocation="LocalMachine"
                           storeName="TrustedPublisher"
                           x509FindType="FindBySubjectName" />
     </serviceCredentials>
   </behavior>
 </serviceBehaviors>

客户端app.config:

      <security mode="Transport">
        <transport clientCredentialType="Certificate" protectionLevel="EncryptAndSign" />
        <message clientCredentialType="UserName" />
      </security>

我知道我必须为用户名部分设置一个自定义验证器,但我一步一步。谢谢,如果您需要更多详细信息,请与我们联系。

1 个答案:

答案 0 :(得分:3)

将clientCredentialType更改为None。也可以在服务器配置上执行此操作。