我wrote自定义WCF绑定一段时间以允许我的负载平衡服务器场通过IIS托管服务。自定义绑定的原因是每个服务器都没有SSL,但需要能够接受用户名+密码的客户端凭据。此服务器场前面的代理具有SSL,因此流量将在防火墙外部加密。这个自定义绑定工作正常,但现在我需要在本地观察来自我的机器的流量,并希望在混合中执行此操作。
问题是这个 - 在.net客户端上如果我设置我的安全模式=“TransportWithMessageCredential”我必须有SSL其他我得到了有趣的错误“无效方案,预期https”
是否有可能为客户端编写一些自定义内容以“忽略”SSL丢失但仍允许我通过SOAP标头传递用户名+密码?
答案 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中,并在您的调用代码中实现信任所有证书策略,但这通常不赞成(通过在不安全的通道上发送用户名和密码)
第三种选择是将合同的操作更改为接受用户名和密码(或某种令牌)作为参数,或更改数据合同,以便您可以将信息与您可能已发送的任何对象一起发送。