为我的WCF服务启用SSL

时间:2009-01-08 21:14:03

标签: wcf ssl

我有一个在开发中使用basicHttpbinding的WCF服务。

现在在产品中我们想要使用SSL,我必须做哪些更改才能强制使用SSL连接?

3 个答案:

答案 0 :(得分:44)

MSDN上的这个页面解释了WCF绑定安全性。

http://msdn.microsoft.com/en-us/library/ms729700.aspx

  

BasicHttpBinding类是   主要用于与之互操作   现有的Web服务,以及许多   这些服务由互联网托管   信息服务(IIS)。   因此,运输安全   这个绑定是专为   与IIS无缝互操作   站点。这是通过设置   安全模式到运输然后   设置客户端凭据类型。   凭证类型值对应   到IIS目录安全机制。   以下代码显示了该模式   正在设置并设置凭据类型   到Windows。你可以用它   客户端和   服务器位于同一个Windows域中。

     

C#

BasicHttpBinding b = new BasicHttpBinding();
b.Security.Mode = BasicHttpSecurityMode.Transport ;
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
     

或者,在配置中:

<bindings>   
   <basicHttpBinding>
            <binding name="SecurityByTransport">
               <security mode="Transport">
                 <transport clientCredentialType="Windows" />
                </security>
            </binding>   
   </basicHttpBinding> 
</bindings>

要在没有登录的情况下启用ssl,请将clientCredentialType设置为“None”。

安全模式的选项是:

无,传输,消息,TransportWithMessageCredential和TransportCredentialOnly

您可以在以下网址找到更多详情:http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx

答案 1 :(得分:1)

我刚遇到同样的问题,发现这篇MSDN文章: How to: Configure an IIS-hosted WCF service with SSL 在本文的最后,您将找到WebConfig文件的xml配置。

解决方案对我来说效果很好。还有一件事要说,请记住,你需要一个真正的证书才能发布!

答案 2 :(得分:0)

我认为,如果你的“绑定”中有<Security mode="Transport">,如果你将它改为<security mode="None">,你就可以了。

这是我正在处理的代码库的副本,我在代码中执行了该代码库,它似乎正在运行。我至少在我点击服务时获得了WSDL,如果这有用的话:)

BasicHttpBinding basicBinding = new BasicHttpBinding();
if (RegistryConnectionStringFactory.UseSslForCommunications)
{
     basicBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
     basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
}
else
{
     basicBinding.Security.Mode = BasicHttpSecurityMode.None;
     basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
}