MSMQ Remote Private在工作组模式下排队权限

时间:2014-01-25 11:34:47

标签: c# permissions msmq

引自http://msdn.microsoft.com/en-us/library/19ww660c(VS.71).aspx

  

不会在整个网络中发布专用队列。代替   它们仅在包含它们的本地计算机上可用。   只有知道完整的应用程序才能访问专用队列   队列的路径名或标签。

我在运行IIS的Windows 2008 Web服务器上设置了一个私有队列(没有活动目录)。

在我授予IIS_IUSRS队列的“接收和发送消息”访问权限之后,在IIS服务器上运行的我的C#.NET Web服务可以读取/写入专用队列。

我想确保没有外部应用程序可以访问此专用队列。所以我编写了一个C#控制台应用程序,使用

连接到远程队列
  

DIRECT = TCP:xxx.xxx.xxx.xxxx \私人$ \ MyQueueName

但是,当我尝试连接时,我会回来

  

无效的队列路径名称。

有人可以确认只有我的.NET Web服务可以访问此私有队列吗?我唯一关心的是,任何.NET Web服务(在同一个IIS服务器上运行)都能够读取这个私有队列,如果他们知道名字的话,因为我必须授予IIS_IUSRS对私有队列的读/写访问权限。 / p>

对此问题的澄清以及我的安全问题将不胜感激。

2 个答案:

答案 0 :(得分:1)

首先,设置权限不提供安全性。如果您知道具有访问权限的帐户的SID,则无论发件人的实际帐户如何,您都可以在其中发送包含该SID的邮件。如果您需要安全性,请使用证书。

在您的示例中,在IIS_IUSRS帐户的上下文中运行的任何应用程序都具有接收/发送权限。你不能冒充一个特定的账户吗?

但是,如果您不信任服务器上的其他应用程序,那么您已经受到了损害。

答案 1 :(得分:0)

尝试添加前导词" FORMATNAME:"然后是分号,没有引号。