2009-01-08 54 views
37

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

现在在产品中我们想要使用SSL,我只需要做什么改变来强制SSL连接?

+0

这里回答:希望它有帮助 http:// stackoverflow。com/questions/2904883所以,“传输”的安全模式表示SSL是什么意思?如何使用wcf-only-basichttpbinding-ssl-and-basic-authentication-in-ii – user3607430 2014-05-06 09:15:43

回答

43

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

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

的basicHttpBinding的类 主要用于与 现有的Web服务进行互操作,以及许多 这些服务是通过互联网 信息服务(IIS)托管。 因此,针对此绑定的传输安全 旨在与 与IIS 站点进行无缝互操作。这是通过将 安全模式设置为传输,然后将 设置为客户机凭证类型来完成的。 凭证类型值对应于IIS目录安全机制的 。 以下代码显示了设置模式 并将凭据类型设置为 。当客户端和 服务器位于同一个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为 “无”。为安全模式

选项包括:

无,运输,信息,TransportWithMessageCredential和TransportCredentialOnly

您可以找到更多的细节:http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx

+5

? – Blankman 2009-01-08 21:34:41

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; 
} 
1

我刚刚遇到了同样的问题,发现这个MSDN文章: How to: Configure an IIS-hosted WCF service with SSL 在文章,你会发现结束WebConfig文件的xml配置。

该解决方案对我来说工作得很好。还有一件事要说,请记住,您需要一个REAL证书才能发布!