繁体   English   中英

为远程IIS应用程序池标识配置MSMQ专用队列权限

[英]Configuring MSMQ private queue permissions for a remote IIS Application Pool Identity

我的设置

  1. ServerA使用本地IIS应用程序池标识在IIS 7上运行Web应用程序。

  2. ServerB正在运行MSMQ,托管一个我们称之为MyQueue的私有队列

  3. 使用ServerB上的消息队列管理单元,我已将MyQueue配置为向ServerA的域帐户(ServerA $)以及ANONYMOUS LOGON用户授予完全控制权限

我想要发生什么

我希望ServerA上的Web应用程序向ServerB上的MyQueue发送消息

什么是实际发生的事

消息永远不会出现在ServerB上,我没有收到任何错误消息。 我已经打开负面源日记,可以看到我在死信队列中遇到“拒绝访问”错误。

如果我向所有人授予完全控制权,则会显示该消息,但我不想这样做。

为什么我认为这会起作用

这篇关于IIS应用程序池标识的文章说明了这一点

在域环境中使用网络服务帐户有很大的好处。 作为网络服务运行的工作进程将网络作为计算机帐户访问。 机器加入域时会生成计算机帐户。 它们看起来像这样:

域名\\计算机名$,

例如:

mydomain \\ machine1 $关于这一点的好处是可以对文件共享或SQL Server数据库等网络资源进行ACL,以允许此计算机帐户访问。

应用泳池标识有哪些?

好消息是应用程序池标识也使用计算机帐户来访问网络资源 无需更改。

基于该信息,我假设在MyQueue上授予MY_DOMAIN \\ _SERVERA $权限,那么事情应该有效。 但他们不是。

知道我做错了什么吗?

这个问题现在已经老化,但我已经设法使用ApplicationPoolIdentity用户从IIS应用程序查询MSMQ:

  1. 转到IIS管理控制台中的应用程序池列表,并记下所需应用程序的应用程序池名称
  2. 服务器管理器 > 属性 > 安全性中右键单击MSMQ队列
  3. 单击添加
  4. 输入对象名称IIS APPPOOL\\{application pool name from step 1} 这应该自动完成应用程序池的名称
  5. 授予所需的权限 - 通常这将是Peek Message和/或Receive Message

最好避免向Everyone授予权限。

参考: https//serverfault.com/a/81246/24816

我刚刚偶然发现了这个并且在我的情况下找到了解决方案,如果我设置IIS作为网络服务帐户运行,远程队列将收到我结束的消息。

这已占用了我今天的很多时间,现在我需要解决如果运行IIS作为网络服务实际上是好的并且不会破坏其他任何东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM