为我的WCF服务启用SSL
我有一个在开发中使用basicHttpbinding的WCF服务。
现在在产品中我们想要使用SSL,我只需要做什么改变来强制SSL连接?
MSDN上的这个页面解释了WCF绑定安全。
http://msdn.microsoft.com/en-us/library/ms729700.aspx
BasicHttpBinding类主要用于与现有Web服务进行互操作,其中许多服务由Internet信息服务(IIS)托pipe。 因此,此绑定的传输安全性旨在与IIS站点进行无缝互操作。 这是通过将安全模式设置为Transport然后设置客户机凭证types来完成的。 证书types值对应于IIS目录安全机制。 以下代码显示了正在设置的模式以及设置为Windows的凭证types。 当客户端和服务器在同一个Windows域上时,您可以使用此configuration。
C#
BasicHttpBinding b = new BasicHttpBinding(); b.Security.Mode = BasicHttpSecurityMode.Transport ; b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
或者,在configuration中:
<bindings> <basicHttpBinding> <binding name="SecurityByTransport"> <security mode="Transport"> <transport clientCredentialType="Windows" /> </security> </binding> </basicHttpBinding> </bindings>
要启用ssl,无需login,请将clientCredentialType设置为“None”。
安全模式的选项是:
无,传输,消息,TransportWithMessageCredential和TransportCredentialOnly
您可以在以下urlfind更多详细信息: http : //msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx
我只是面临同样的问题,并发现这个MSDN文章: 如何:使用SSLconfigurationIIS托pipe的WCF服务在本文结尾处,您将findWebConfig文件的xmlconfiguration。
该解决scheme对我来说工作得很好。 还有一件事要说,请记住,你需要一个真正的证书发布!
我认为,如果你在“ <Security mode="Transport">
你的”绑定“下,如果你将它改为<security mode="None">
,你会没事的。
这是我正在处理的代码库的一个副本,我做了这个代码中,它似乎工作。 我得到的WSDL,至less当我打这个服务,如果这有助于所有:)
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; }