为我的WCF服务启用SSL
我有一个在开发中使用basicHttpbinding的WCF服务为我的WCF服务启用SSL,wcf,ssl,Wcf,Ssl,我有一个在开发中使用basicHttpbinding的WCF服务 现在,在我们想要使用SSL的产品中,我必须做哪些更改才能仅强制SSL连接?MSDN上的此页解释了WCF绑定安全性 BasicHttpBinding类是 主要用于与进行互操作 现有的Web服务,以及许多 这些服务由互联网托管 信息服务(IIS)。 因此,运输安全 因为这种装订是为 与IIS的无缝互操作 地点。这是通过设置 安全模式传输,然后 正在设置客户端凭据类型。 凭证类型值对应 到IIS目录安全机制。 下面的代码显示了该模式
现在,在我们想要使用SSL的产品中,我必须做哪些更改才能仅强制SSL连接?MSDN上的此页解释了WCF绑定安全性 BasicHttpBinding类是 主要用于与进行互操作 现有的Web服务,以及许多 这些服务由互联网托管 信息服务(IIS)。 因此,运输安全 因为这种装订是为 与IIS的无缝互操作 地点。这是通过设置 安全模式传输,然后 正在设置客户端凭据类型。 凭证类型值对应 到IIS目录安全机制。 下面的代码显示了该模式 正在设置和凭据类型已设置 打开窗户。你可以用这个 当客户端和 服务器位于同一Windows域上 C# 或者,在配置中:
<bindings>
<basicHttpBinding>
<binding name="SecurityByTransport">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
要启用ssl,无需登录,请将clientCredentialType设置为“无”
安全模式的选项包括:
无、传输、消息、仅带有MessageCredential和TransportCredential的传输
您可以在以下位置找到更多详细信息:我认为如果在您的绑定下有
,如果您将其更改为
,您就可以了
这是我正在编写的代码库的副本,我在代码中尝试了这一点,它似乎正在工作如果有帮助的话,我至少在调用服务时得到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;
}
我刚刚遇到了同样的问题,发现了这篇MSDN文章: 在本文的末尾,您将看到WebConfig文件的xml配置
这个解决方案对我很有效。还有一件事要说,记住你需要一个真正的证书才能发布 所以“传输”的安全模式意味着SSL?这里的答案是:希望它有帮助
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;
}