2008-12-22 135 views
2

我有一个WCF服务托管在Windows应用程序中。该服务使用netMsmqBinding。客户端和主机位于不同的域中。我的问题是如何配置安全设置?配置WCF安全设置

被传递的数据是敏感的,所以我想确保客户端和服务的主机之间的通信。唯一的问题是,我不知道该怎么做...(我不想使用证书) 任何帮助,将不胜感激!


詹姆斯Schek:它完美,当我没有安全(不管是MSMQ)运行它。在我的情况下,MSMQ托管在服务器上,如果它停机 - 那么客户端的消息将保留在它的传出队列中,并且当MSMQ启动并再次运行时,所有消息都会发送 - 这是MSMQ的功能,并且是预期的行为(这就是为什么通过MSMQ发送的所有消息必须是单向的,因为我们不知道服务器或客户端何时在线 - 我们只是想要传递消息)。

一个在我们组织的管理员问我,如果有其他的方式(而不是证书) - 这就是为什么我要求(他想知道在这种情况下确保所有可能的方式)。

我处于工作组模式,而不是域模式!所以我无法使用域名......并且根本没有广告。

回答

1

MSMQ一般不适合在互联网上(如果那是你打算做什么)。否则,如果你想要消息级别的安全性,我认为你不能避免证书。

+0

但MSMQ是我唯一的选择,因为客户端和服务器并不总是在同一时间在线。我的意思是有断开连接的呼叫,根据MSDN建议在这种情况下使用MSMQ。那么证书是消息级安全性的唯一选择? 那么交通等级安全呢? – 2008-12-22 12:03:08

1

你可能想从MSDN看这篇文章,看看你有什么选择。您还可以实现自定义绑定,其中传输和加密消息是根据您的选择实施的。 Btw here是链接。

0

我有我的怀疑,WCF将按照你的预期在这种情况下工作。 MSMQ在哪里举办?在“服务器”还是“客户端”上?还是有独立的MSMQ主机?断开连接时,我相信唯一可以工作的系统是托管MSMQ的系统。另一个系统将无法初始化WCF。

如果你的系统是在不同的领域,但在同一个广告的森林,那么你可以使用域认证的运输保障。如果他们完全在森林中,那么您必须自己加密有效负载或依靠消息级别的安全性 - 即。证书。

如果标头不是敏感的(即您调用的函数的名称,谁在调用它等),则可以手动加密有效负载。即将数据序列化为binary或xml,对序列化对象进行加密,然后调用WCF方法,并以生成的字节数组为参数。

你还没有解释为什么你想避免证书。显然还有另外一个你没有告诉我们的限制。为什么不使用证书?

0

,你可以很容易地通过,如果你需要消息级安全性的结合,指定相应的属性使用传输安全,认证是您最佳的选择。

0

我建议由O'Reilly获得朱瓦尔·洛的“编程WCF服务”的副本。他有一整章致力于使用WCF和MSMQ。