【发布时间】:2010-09-26 12:55:58
【问题描述】:
我在 Internet 托管服务提供商中部署了一个 Web 应用程序。此 Web 应用程序使用部署在我公司应用程序服务器上的 IIS 服务器上的 WCF 服务,为了对公司的数据库进行数据访问,出于安全原因,网络人员允许我通过防火墙公开此 WCF 服务。图表看起来像这样。
[托管页面] ---> (Internet) ---> |防火墙
<Public IP>:<Port-X >| ---> [IIS 与 WCF 服务<Comp. Network Ip>:<Port-Y>]
我还想使用 wsHttpBinding 来利用其安全功能,并加密敏感信息。
尝试后出现以下错误:
异常详细信息:System.ServiceModel.EndpointNotFoundException: 带有 To 'http://:/service/WCFService.svc' 的消息不能 由于 AddressFilter 不匹配,在接收方处理 端点调度程序。检查发送方和接收方的 EndpointAddresses 同意。
做一些研究后,我发现 wsHttpBinding 使用 WS-Addressing 标准,并且阅读了有关此标准的信息,我了解到 SOAP 标头已得到增强,可以包含诸如“MessageID”、“ReplyTo”、“Action”和“To”之类的标签。
所以我猜是这样,因为客户端应用程序端点指定了防火墙 IP 地址和端口,并且服务使用与防火墙 IP 不同的内部网络地址进行回复,然后 WS-Addressing 触发上述消息。我认为这是一个非常好的安全措施,但在我的场景中并不是很有用。
引用 WS-Addressing 标准提交 (http://www.w3.org/Submission/ws-addressing/)
“由于目前广泛使用的网络技术的范围 (例如,NAT、DHCP、防火墙),许多部署无法分配 给定端点的有意义的全局 URI。允许这些“匿名” 端点以启动消息交换模式并接收回复, WS-Addressing 定义了以下众所周知的 URI 供 没有稳定的、可解析的 URI 的端点。 http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous"
如何配置我的 wsHttpBinding 端点来寻址我的防火墙的 IP,并忽略或绕过 SOAP 消息头中的“To”WS-Addressing 标记中指定的地址?还是我必须更改我的服务端点配置中的某些内容?
我们将不胜感激帮助和指导。
马尔科。
P.S.:虽然我找到了任何解决方案,但我使用的是 basicHttpBinding,当然绝对没有问题。
【问题讨论】:
标签: wcf firewall wshttpbinding ws-addressing