如何在不需要服务证书的情况下创建WCF服务?

时间:2011-10-04 08:50:11

标签: wcf wcf-security

我正在尝试使用WCF创建基本的Web服务。它很小,只能在两台服务器之间内部使用,所以不需要任何安全性。不幸的是,WCF需要证书:

  

未提供服务证书。在ServiceCredentials中指定服务证书。

我不想在任何地方配置证书。证书非常适合安全性,但也总是包含两天令人头疼的问题,直到你把它们弄好就这样,我现在不想要它。

我在谷歌上搜索但无法在任何地方找到答案 - 你能禁用WCF的这个功能吗?

已添加:几乎忘了,这是我的绑定内容,以防它们有用:

<bindings>
  <wsFederationHttpBinding>
    <binding name="XXXServiceBinding" maxReceivedMessageSize="1073741824">
      <readerQuotas maxStringContentLength="1073741824" maxArrayLength="2147483647"/>
    </binding>
  </wsFederationHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="XXXServiceBehavior">
      <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="XXX.XXX" behaviorConfiguration="XXXServiceBehavior">
    <endpoint address="xxx" contract="XXX.IXXX" binding="wsFederationHttpBinding" bindingConfiguration="XXXServiceBinding">
      <identity>
        <dns value="XXX Test Service"/>
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>

新增2:哦,对,VS2010,.NET 4.0。 Windows 7,集成了VS webserver。

3 个答案:

答案 0 :(得分:4)

您的web.config绑定部分是什么样的?据我所知,basicHttpBindingclientCredentialType="None"一起使用时应该没有任何证书。即:

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IServiceWS">
          <security mode="None">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
   ....

答案 1 :(得分:3)

如果您不想使用安全性,为什么使用专为联合安全性设计的WsFedarationBinding?请改用BasicHttpBinding。默认情况下它不使用任何安全性,或者如果所有通信都将在使用域帐户的用户和服务的同一Windows域中执行,则可以使用WsHttpBinding默认配置 - 它将使用Windows安全性而无需任何证书

答案 2 :(得分:2)

您在服务中使用wsFederationHttpBinding。如果推进这么多的安全性并不重要,那么你可能已经开始使用名为basicHTTP绑定的简单HTTP绑定。考虑对服务进行适当的绑定。