将X.509证书与UserName clientCredentialType一起使用

时间:2012-02-27 11:25:13

标签: wcf wcf-security x509certificate

我正在创建一个需要代理用户名和密码的WCF服务,为了做到这一点,我需要提供一份服务证书,我已经为其提供了有效的Verisign证书。

我遇到的问题是每当我使用以下配置时,都会收到错误消息“未提供服务证书。在ServiceCredentials中指定服务证书。”

<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
<behaviors>
  <serviceBehaviors>
    <behavior name="WSBehaviour">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceCredentials>
        <serviceCertificate findValue="devstage1.vcg-online.net" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="TrustedPublisher" />
        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Acre.IntegrationService.CustomValidator, Acre.IntegrationService" />
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="Acre.IntegrationService.IntegrationService" behaviorConfiguration="WSBehaviour">

    <endpoint address="http://localhost/Acre.IntegrationService/IntegrationService.svc"
              binding="wsHttpBinding"
              bindingConfiguration="WSBinding"
              contract="Acre.IntegrationService.IIntegrationService"
              name="WS" />

    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />

  </service>
</services>
<bindings>
  <wsHttpBinding>
    <binding name="WSBinding" allowCookies="false">
      <security mode="Message">
        <message clientCredentialType="UserName" negotiateServiceCredential="true" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

更新配置

我已使用mmc.exe将控制台中的证书安装到以下路径

证书(本地电脑)/个人/证书/ 证书(本地计算机)/受信任的根证书颁发机构/证书/ 证书(本地计算机)/受信任的出版商/证书/

我搜索了互联网,无法找到解决问题的明确方法。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我已经设法解决了这个问题,@ Rajesh你对clientCertificate是正确的,需要是serverCertificate,它纠正了错误,没有找到证书,谢谢你。证书已经安装在计算机用户的计算机上。

密钥集的问题是证书没有为其设置正确的帐户权限。我更改了permisisons以允许IIS_USRS访问证书,现在它已修复