簡體   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