1

不久前,我编写了一个自定义 WCF 绑定,以允许我的负载平衡场通过 IIS 托管服务。自定义绑定的原因是每个服务器都没有 SSL,但需要能够接受用户名 + 密码的客户端凭据。此场前面的代理具有 SSL,因此流量将在防火墙外加密。此自定义绑定工作正常,但现在我需要在本地查看来自我的机器的流量,并希望在不使用 SSL 的情况下执行此操作。

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

是否可以为客户端编写一些自定义内容以“忽略”缺少 SSL 但仍然让我通过 SOAP 标头传递用户名 + 密码?

4

3 回答 3

2

.net 3.5 sp1有一个修补程序,可将 AllowInsecureTransport 属性添加到 SecurityBindingElement。这也将出现在 .net 4 beta 2 中。

于 2010-03-23T18:56:35.177 回答
2

是的,我不久前写了一篇关于此的博客文章,名为“如何:使用 WCF 的 SSL 直通——或——通过普通 HTTP 的 TransportWithMessageCredential”

简而言之,您需要创建自己的HttpTransportBindingElement子类,该子类“谎称”提供安全性。

于 2009-11-03T15:24:08.503 回答
0

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

另一种选择是自己生成 SSL 证书,将其安装在 IIS 中,并在调用代码中实施信任所有证书策略,但这通常是不受欢迎的(通过不安全的通道发送用户名和密码也是如此)。

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

于 2009-11-03T15:17:20.867 回答