簡體   English   中英

IIS 7.5中的安全例外和IIS 7.5中的“加載用戶配置文件”選項

[英]Security exceptions in ASP.NET and Load User Profile option in IIS 7.5

部署新版本的ASP.NET 2.0應用程序后,它開始引發安全異常:“System.Security.SecurityException:請求類型'System.Web.AspNetHostingPermission,System,Version = 2.0.0.0,Culture =的權限中立,PublicKeyToken = b77a5c561934e089'失敗了。“

在對互聯網進行快速研究后,我們能夠通過在IIS 7.5應用程序池中將“加載用戶配置文件”設置為True來解決此問題。 這個解決方案在stackoverflow上也提到過幾次:

但是,我們無法找到為什么它必須是真實的原因。 我們審查了新版本中的所有更改(很高興只有少數幾個),但沒有發現任何可疑的內容(無法訪問注冊表或臨時數據,因為某些文章建議等)。 當IIS 7.5中托管的ASP.NET應用程序需要將“加載用戶配置文件”選項設置為True時,是否可以向我們提供提示?

細節:

  • 應用程序池:.NET 2.0; 管理管道模式 - 經典; 身份 - 自定義域帳戶
  • 在IIS 6.0(W2K3)中:新舊版本的應用程序工作正常
  • 在IIS 7.5(W2K8-R2)中:舊版本的應用程序正常工作; 新版本的應用程序引發安全異常 - 它在將“加載用戶配置文件”設置為True后開始工作

謝謝!

編輯:我們終於找到了這個問題的原因! 我們的管理員使用不同的技術將新版本的應用程序從登台環境復制到生產環境。 他使用Web服務器作為中介。 將壓縮版本構建工件下載到生產環境然后解壓縮文件后,它們仍被標記為“已阻止”,因為它們來自不同的計算機。 另請參見https://superuser.com/questions/38476/this-file-came-from-another-computer-how-can-i-unblock-all-the-files-in-a 然后ASP.NET在部分信任中邏輯執行這些二進制文件而不是完全信任,這實際上導致我們的應用程序中提到的安全性異常

將“加載用戶配置文件”設置為“True”會將安全性例外修復為副作用。 如果“加載用戶配置文件”設置為False,那么我們的應用程序(不是我們的代碼,可能是一些.NET BCL或外部程序集)正在嘗試查詢有關目錄“C:\\ Windows \\ System32 \\ config \\ systemprofile \\ AppData \\”的基本信息本地\\ Microsoft \\ Windows \\ Temporary Internet Files“不允許應用程序池的標識:

  • 完全信任:拒絕此查詢操作的訪問不會引發任何異常
  • 使用部分信任:拒絕此查詢操作的訪問會引發安全性異常

如果“加載用戶配置文件”設置為True,則每次啟動應用程序池時都會創建Users目錄中的臨時配置文件。 然后,我們的應用程序嘗試查詢此配置文件的“Temporary Internet Files”目錄的信息,該目錄允許應用程序池的標識。 因此即使部分信任也不會引發異常。

非常好的故障排除會話! :)

“加載用戶配置文件”設置可以幫助您使用臨時文件的另一個示例。 有時這個用途可以是間接的。 例如,SQL Express可以在某些情況下執行此操作。

所以我的建議。 關閉“加載用戶配置文件”並檢查%TEMP%。 然后嘗試為應用程序池提供域帳戶對%TEMP%目錄的完全訪問權限(或更改訪問權限)。 可能它可以解決你的問題。

另一個建議是使用Process Monitor(請參閱http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx )來定位用戶配置文件的哪些部分將被使用(或接收“訪問被拒絕”錯誤)當您收到“System.Security.SecurityException:請求類型'System.Web.AspNetHostingPermission'的權限”異常時。

我也遇到了同樣的問題,可以通過設置load user profile = true來解決問題。 但是我已經恢復了load user profile = false並重新啟動了應用程序池,但現在我沒有任何異常。 我已經瀏覽了stackoverflow以及Asp.net和iis論壇頁面上的所有相關帖子。

LoadUserProfile可能提供幫助的另一個方面是在WCF中配置可信的MSMQ綁定。 如果應用程序池在受信任帳戶下運行,則除非將應用程序池加載用戶配置文件設置設置為true,否則不會加載SID,因此身份驗證將失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM