配置WCF安全设置

时间:2008-12-22 11:37:30

标签: wcf security msmq

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

传输的数据非常敏感,因此我希望确保客户端与服务主机之间的通信安全。唯一的问题是我不知道怎么做...(我不想使用证书) 任何帮助将不胜感激!


James Schek :当我在没有安全性的情况下运行它时,它运行得很好(无论MSMQ在哪里)。在我的情况下,MSMQ托管在服务器上,如果它已关闭 - 那么客户端的消息将保留在其传出队列中,当MSMQ启动并再次运行时,所有消息都将被发送 - 这是MSMQ的强大功能,并且是预期的行为(这就是为什么通过MSMQ发送的所有消息都必须是OneWay,因为我们不知道服务器或客户端何时在线 - 我们只想传递消息。)

我们组织中的一位管理员问我是否有其他方式(而不是证书) - 这就是我要问的原因(他想知道在这种情况下所有可能的保护方式)。

我处于工作组模式而不是域模式!所以我无法使用Domain ...而且根本没有AD。

5 个答案:

答案 0 :(得分:1)

MSMQ通常不适合在互联网上使用(如果这是你打算做的)。否则,如果您想要消息级安全性,我认为您不能避免使用证书。

答案 1 :(得分:1)

您可能希望从MSDN查看此文章,以了解您拥有的选项。您还可以实现自定义绑定,根据您的选择实现消息的传输和加密。顺便说一句here就是链接。

答案 2 :(得分:0)

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

如果您的系统位于不同的域,但是在同一个AD林中,则可以使用域身份验证传输安全性。如果它们完全在森林上,那么你必须自己加密有效载荷或依赖于消息级安全性 - 即。证书。

如果标题不敏感(即您正在调用的函数的名称,调用它的人等),那么您可以手动加密有效负载。即将您的数据序列化为二进制或xml,加密序列化对象,然后使用生成的字节数组作为参数调用您的WCF方法。

您尚未解释为何要避免使用证书。很显然,你还没有告诉我们另一个限制因素。为什么不使用证书?

答案 3 :(得分:0)

如果您需要消息级安全性,则可以通过在绑定上指定适当的属性来轻松使用传输安全性,证书是您的最佳选择。

答案 4 :(得分:0)

我建议获得O'Reilly的Juval Lowy的“编程WCF服务”副本。他有一整章致力于将WCF与MSMQ结合使用。