[英]Configuring MSMQ private queue permissions for a remote IIS Application Pool Identity
我的设置
ServerA使用本地IIS应用程序池标识在IIS 7上运行Web应用程序。
ServerB正在运行MSMQ,托管一个我们称之为MyQueue的私有队列
使用ServerB上的消息队列管理单元,我已将MyQueue配置为向ServerA的域帐户(ServerA $)以及ANONYMOUS LOGON用户授予完全控制权限
我想要发生什么
我希望ServerA上的Web应用程序向ServerB上的MyQueue发送消息
什么是实际发生的事
消息永远不会出现在ServerB上,我没有收到任何错误消息。 我已经打开负面源日记,可以看到我在死信队列中遇到“拒绝访问”错误。
如果我向所有人授予完全控制权,则会显示该消息,但我不想这样做。
为什么我认为这会起作用
这篇关于IIS应用程序池标识的文章说明了这一点
在域环境中使用网络服务帐户有很大的好处。 作为网络服务运行的工作进程将网络作为计算机帐户访问。 机器加入域时会生成计算机帐户。 它们看起来像这样:
域名\\计算机名$,
例如:
mydomain \\ machine1 $关于这一点的好处是可以对文件共享或SQL Server数据库等网络资源进行ACL,以允许此计算机帐户访问。
应用泳池标识有哪些?
好消息是应用程序池标识也使用计算机帐户来访问网络资源 。 无需更改。
基于该信息,我假设在MyQueue上授予MY_DOMAIN \\ _SERVERA $权限,那么事情应该有效。 但他们不是。
知道我做错了什么吗?
这个问题现在已经老化,但我已经设法使用ApplicationPoolIdentity用户从IIS应用程序查询MSMQ:
IIS APPPOOL\\{application pool name from step 1}
。 这应该自动完成应用程序池的名称 最好避免向Everyone授予权限。
我刚刚偶然发现了这个并且在我的情况下找到了解决方案,如果我设置IIS作为网络服务帐户运行,远程队列将收到我结束的消息。
这已占用了我今天的很多时间,现在我需要解决如果运行IIS作为网络服务实际上是好的并且不会破坏其他任何东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.