代码之家  ›  专栏  ›  技术社区  ›  Toran Billups

是否可以对WCF客户机进行黑客攻击,以便在不使用SSL的情况下传递消息凭据?

  •  1
  • Toran Billups  · 技术社区  · 16 年前

    wrote 一个自定义的WCF绑定,稍后允许我的负载平衡场通过IIS承载服务。自定义绑定的原因是每个服务器都没有SSL,但需要能够接受用户名+密码的客户端凭据。此服务器场前面的代理具有SSL,因此流量将在防火墙外加密。这个定制绑定工作得很好,但是现在我需要在本地监视来自我的机器的流量,并希望在混合中使用SSL来完成这个工作。

    问题是-在.NET客户端上,如果我设置了安全模式“transportTwithmessageCredential”,则必须使用SSL,否则将出现有趣的错误“无效方案,应为https”

    是否可以为客户机编写自定义代码来“忽略”缺少的SSL,但仍允许我通过SOAP头传递用户名+密码?

    3 回复  |  直到 16 年前
        1
  •  2
  •   Drew Marsh    16 年前

    是的,我写了一篇关于这个的博客 "How To: SSL Passthrough with WCF --or-- TransportWithMessageCredential over plain HTTP" .

    缺点是你需要创造自己的 HttpTransportBindingElement 有关提供安全性的“谎言”子类。

        2
  •  2
  •   Aaron Fischer    16 年前

    有一个 Hotfix 对于.NET 3.5 SP1,它向SecurityBindingElement添加了allowSecureRtransport属性。这也将出现在.NET 4 Beta 2中。

        3
  •  0
  •   Langdon    16 年前

    我假设,在您的自定义绑定中,如果只使用安全模式=“message”,您也会收到一个错误?实际上并不需要自定义绑定,因为(如果我没有弄错的话)您可以使用安全模式为message的wshttpbinding(不需要SSL)。

    另一种选择是自己生成一个SSL证书,在IIS中安装它,并在调用代码中实现一个信任所有证书策略,但这通常是不允许的(就像通过不安全的通道发送用户名和密码一样)。

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