0

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

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

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

最好的问候/瓦莱

4

1 回答 1

1

我不得不通过删除它来稍微“改进”我以前的答案:)

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

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

这个怎么运作:

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

请注意,原始客户端不知道它连接到代理服务器而不是原始服务

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

希望它有帮助,吉卡努

于 2010-06-10T11:44:29.997 回答