【问题标题】:Enable SSL for my WCF service为我的 WCF 服务启用 SSL
【发布时间】:2010-09-30 08:54:56
【问题描述】:

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

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

【问题讨论】:

标签: wcf ssl


【解决方案1】:

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

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

BasicHttpBinding 类是 主要用于互操作 现有的 Web 服务,以及许多 这些服务由 Internet 托管 信息服务 (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

【讨论】:

  • 所以“传输”的安全模式表示 SSL?
【解决方案2】:

我刚遇到同样的问题,发现这篇 MSDN 文章: How to: Configure an IIS-hosted WCF service with SSL 文末有WebConfig文件的xml配置。

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

【讨论】:

    【解决方案3】:

    我认为,如果在您的 bindings 下有 &lt;Security mode="Transport"&gt;,如果您将其更改为 &lt;security mode="None"&gt;,就可以了。

    这是我正在处理的 代码库 的副本,我尝试了该代码,它似乎可以正常工作。
    我至少在调用服务时会得到 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多