【问题标题】:NetTcpBinding wcf service with remote access AND transport security?具有远程访问和传输安全性的 NetTcpBinding wcf 服务?
【发布时间】:2010-02-17 01:03:52
【问题描述】:

我正在努力解决与名称解析或类似问题有关的 WCF 问题。当我通过 Web 服务器上的 Web 应用程序使用应用程序服务器上的 wcf 服务 (netTcpBinding) 时,它不起作用。好的,它在大多数情况下都不起作用。如果您使用 localhost 或 127.0.0.1 从 Web 服务器本身访问 Web 应用程序,则它可以工作。但是,通过另一台客户端计算机通过 Web 服务器访问它或使用主机名或 IP 地址在 Web 服务器上本地访问 Web 应用程序不起作用。在这两种情况下,您都会收到套接字连接中止错误。

更有趣的是,将所有安全性切换为“无”而不是“传输”可以解决问题。

我的问题是,是否可以使用您的 Web 服务器访问 wcf 服务并仍然使用传输安全性?或者这是一个错误/设计的行为?

非常感谢您的任何见解, 史蒂夫

【问题讨论】:

    标签: wcf nettcpbinding


    【解决方案1】:
    1. 默认的 NetTcpBinding 安全选项是 Kerberos / Windows 身份验证。如果您的客户端和服务不在同一个域中,它将无法工作。您可能需要查看基于证书的身份验证。

    2. 如果您的服务在域帐户下运行,请尝试将其更改为 LocalService 或 NetworkService 以查看是否可以解决问题。

    【讨论】:

      【解决方案2】:

      传输安全通常只在点对点上起作用——当客户端直接连接到服务器时。

      如果您有来自互联网的客户,您将无法控制他们经过多少中间跃点 - 因此,即使您让传输安全性工作,也很可能根本无法工作,例如您的消息可能会受到保护,从客户端到第一个跃点,以及从最后一个跃点到您的服务器 - 但不是在跃点之间。

      对于互联网场景,传输安全通常不是一个有效的选项 - 对于这些情况,请使用消息安全。

      我不能 100% 确定为什么连接根本不起作用 - 但无论如何,如果您不在公司防火墙后面,我不会在这种情况下使用具有传输安全性的 netTcp。

      能否将您的服务器端配置(<system.serviceModel> 中的任何内容)添加到您的问题中,以查看您如何设置传输安全性?

      【讨论】:

      • 米马克感谢您的帮助。这确实是有道理的,但我认为在技术上应该可以保护 Web 服务器和 wcf 之间的通信——因为我无论如何都控制着每一跳(作为多层应用程序的一部分)。当我再次访问时,我会尽快发布一些代码/标记。
      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 2011-06-27
      • 2012-08-08
      • 1970-01-01
      相关资源
      最近更新 更多