从DMZ访问防火墙后面的WCF服务

时间:2010-03-29 07:55:16

标签: wcf firewall dmz

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

1)我的DMZ上的Web应用程序是否可以在不打开端口的情况下访问Intranet上的WCF服务?

2)如果没有,是否有任何参考架构描述可以完成打开端口并且仍然有安全的解决方案?也许与证书,某种授权等相结合。不需要任何其他应用程序来使用该服务(至少现在不需要),因此可以使用一种配置来限制消费者使用这个单一的Web应用程序。

祝你好运 / Valle

1 个答案:

答案 0 :(得分:1)

我必须通过删除所有内容来“改进”我之前的答案:)

所以这是它的简短版本。不是最好的,但它的效果非常好。 为了使解释更简单,让我们考虑您有一个服务和一个想要使用它的客户端。

  1. 添加在防火墙外部运行的代理服务器应用程序并公开2项服务:
    第一个与原始服务相同(相同的地址,约束,合同)
    第二个是双工服务,其回调与上述服务的合同相同
  2. 添加在防火墙内部运行的代理客户端应用程序,并使用代理服务器的第二项服务以及原始服务
  3. 原始客户端将使用代理服务器而不是原始服务
  4. 工作原理:

    1. 代理客户端连接到代理服务器并注册回调
    2. 代理客户端也连接到原始服务
    3. 原始客户端连接到代理服务
    4. 代理服务器将所有来自服务的调用转发给回调(记住合同是相同的)
    5. 代理客户端将所有来自回调实现的调用转发给原始服务的客户端(同样合同也是相同的)
    6. 原始服务处理调用并返回结果
    7. 回复将以相反的顺序转发回原始客户端
    8. 请注意,原始客户端不知道它连接到代理服务器而不是原始服务

      另一个注意事项是转发发生在代码中并不是很好。 .NET 4.0中的WCF具有路由支持,但我不确定您是否只能路由回调通道而不是直接通道。

      希望它有所帮助,  Gicanu