0

我正在构建一个解决方案,该解决方案将使用 WCF 使我组织中的所有计算机定期“回家”。为了便于讨论,我们假设我组织中的每台计算机都连接了一个天气传感器。此应用程序的目的是每台计算机都应联系中央服务器以报告其所在位置的天气情况。要传输的数据被编码为字符串。

假设为了讨论,我有一个 Windows 服务,它SendWeatherReport每天调用一次方法。这个函数的签名是:

void SendWeatherReport(string report);

假设我设置了一个 WCF 方法,接口如下:

[ServiceContract]
public interface IWeatherReportReceiver
{
    [OperationContract]
    void GetReport(string report);
}

我有以下要求:

1) 我的天气预报信息是专有和保密的;出于安全目的,必须对其进行加密。

2) 天气报告信息将通过互联网传输。运行 WCF 服务以接收报告的计算机将位于example.com.

3) 天气预报必须通过一些过度配置的防火墙才能到达服务器。

现在我已经解释了我的要求,请向我解释如何设置我的端点配置以满足这些要求。

为了满足 (1),我相信我需要使用 net tcp 绑定。对于 (3),也许我可以将此绑定配置为在端口 80、443 或其他一些常用端口上工作。我主要关心的是我不知道如何配置软件以向 WCF 服务器标识自己......

4

2 回答 2

3

WsHttpBinding 可以加密消息,即使没有 https。

如果您想使用 SOAP 加密,则必须使用SecurityMode="Message"创建绑定,如果您想(并且可以)使用 https,则必须使用SecurityMode="Transport"来查看如何:设置安全模式

我的感觉是,使用 HTTP 协议部署二进制 TCP 会简单得多,因为代理通常只允许 http 流量。

关于身份验证,这取决于:) 最安全的机制是使用客户端证书,但是您是否需要它而不是标准的用户/密码身份验证?(以及工作所需的所有基础设施)

于 2011-11-30T16:06:03.890 回答
2

听起来像是Microsoft 服务总线的完美应用程序。

于 2011-11-30T17:08:17.563 回答