为我的 WCF 服务启用 SSL

问题描述 投票:0回答:3

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

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

wcf ssl
3个回答
45
投票

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
Transport
Message
TransportWithMessageCredential
TransportCredentialOnly

您可以在以下位置找到更多详细信息:http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx


1
投票

我刚刚遇到了同样的问题,并找到了这篇 MSDN 文章: 如何:使用 SSL 配置 IIS 托管的 WCF 服务 在文章最后你会找到WebConfig文件的xml配置。

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


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;
}
© www.soinside.com 2019 - 2024. All rights reserved.