2010-03-29 58 views
0

我正在为客户开发服务。该服务将位于防火墙后面的内部网上,并拥有自己的数据库。该服务将被位于DMZ上的另一个Web应用程序使用。现在,我的问题是,公司有一种严格的政策,不打开从DMZ到Intranet的任何端口。从DMZ访问防火墙后的WCF服务

1)DMZ上的Web应用程序可以在不打开端口的情况下访问Intranet上的WCF服务吗? 2)如果不是,是否有任何参考体系结构描述打开一个端口可能会完成并仍然有一个安全的解决方案?也许与证书相结合,某种类型的应用程序等等。不需要任何其他应用程序来使用服务(至少现在不用),所以可以有一个限制消费者使用这个Web应用程序的配置。

问候 /瓦勒

回答

1

我不得不“细化”我以前的答案一点,通过删除所有:)

因此,这里的短,更好的版本吧。不是最好的,但它工作得很好。 为了让解释更简单,让我们考虑你有一个服务和一个想要使用它的客户端。

  1. 添加防火墙外部运行,并暴露2个服务的代理服务器应用程序:
    第一个是与原始服务(同一地址,绑定合约)
    第二个是一个双工服务那作为其回调上述相同的服务合同
  2. 添加防火墙内运行一个代理客户端应用程序和使用代理服务器的第二服务,也可以在原有的服务
  3. 原来的客户端会消耗代理服务器,而不是原服务

它是如何工作的:

  1. 代理客户端连接到代理服务器,并注册回调
  2. 代理客户也连接到原有的服务
  3. 原来的客户端连接到代理服务
  4. 代理服务器将所有来自服务的呼叫转移到回叫(记得合同是相同的)
  5. 代理客户端将所有从回调实施到原始服务的客户端的呼叫(再次合同相同)
  6. 原始服务处理该呼叫并返回结果
  7. 回复以相反的顺序被转回到原始客户端

注意,原来的客户端不知道它连接到代理服务器来代替原来的服务

另外一个需要注意的是,转发发生在这是不是很漂亮的代码。 .NET 4.0中的WCF具有路由支持,但我不确定您只能路由回调通道,而不是直接路由。

希望它有帮助, Gicanu