是否可以破解WCF客户端在没有SSL的情况下传递消息凭据?

时间:2009-11-03 15:03:57

标签: wcf wcf-security wcf-client

wrote自定义WCF绑定一段时间以允许我的负载平衡服务器场通过IIS托管服务。自定义绑定的原因是每个服务器都没有SSL,但需要能够接受用户名+密码的客户端凭据。此服务器场前面的代理具有SSL,因此流量将在防火墙外部加密。这个自定义绑定工作正常,但现在我需要在本地观察来自我的机器的流量,并希望在混合中执行此操作。

问题是这个 - 在.net客户端上如果我设置我的安全模式=“TransportWithMessageCredential”我必须有SSL其他我得到了有趣的错误“无效方案,预期https”

是否有可能为客户端编写一些自定义内容以“忽略”SSL丢失但仍允许我通过SOAP标头传递用户名+密码?

3 个答案:

答案 0 :(得分:2)

是的,我写了一篇关于这篇文章的博文,名为"How To: SSL Passthrough with WCF --or-- TransportWithMessageCredential over plain HTTP"

缺点是你需要创建自己的HttpTransportBindingElement子类,它“提供安全性”。

答案 1 :(得分:2)

.net 3.5 sp1有Hotfix,它将AllowInsecureTransport属性添加到SecurityBindingElement。这也将在.net 4 beta 2中。

答案 2 :(得分:0)

我认为,在您的自定义绑定中,如果您只使用安全模式=“消息”,您也会收到错误消息?自定义绑定不是必需的,因为(如果我没弄错的话)你可以使用wsHttpBinding和security mode =“Message”(不需要SSL)。

另一种方法是自己生成SSL证书,将其安装在IIS中,并在您的调用代码中实现信任所有证书策略,但这通常不赞成(通过在不安全的通道上发送用户名和密码)

第三种选择是将合同的操作更改为接受用户名和密码(或某种令牌)作为参数,或更改数据合同,以便您可以将信息与您可能已发送的任何对象一起发送。