【问题标题】:Access WCF-service behind firewall from DMZ从 DMZ 访问防火墙后的 WCF 服务
【发布时间】:2011-02-01 22:46:14
【问题描述】:

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

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

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

最好的问候 /瓦莱

【问题讨论】:

    标签: wcf firewall dmz


    【解决方案1】:

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

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

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

    它是如何工作的:

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

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

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

    希望对你有帮助, 吉卡努

    【讨论】:

      猜你喜欢
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多