這是一個類似的問題,我以前見過很多,但我還沒有找到明確的答案,所以我會盡量在這裏非常具體以避免重複。IIS 7.5集成身份驗證NTFS文件夾權限沒有模仿
我們在2008R2上運行IIS7.5,僅限開啓了Windows身份驗證(無匿名)並且沒有模擬。有一個爲應用程序池用戶指定的網絡帳戶。
當我檢查當前正在執行的頁面的WindowsIdentity.GetCurrent()時,根據我們的配置得到預期的(應用程序池)用戶。
http://www.mikeobrien.net/blog/identities-for-different-iis7/
這很好地符合預期。但是,似乎我們的應用程序上的NTFS文件夾權限正在根據經過身份驗證的用戶的身份進行檢查。
這似乎與我發現的大多數文檔相矛盾。上面的鏈接以及
http://msdn.microsoft.com/en-us/library/kwzs111e(v=vs.100).aspx
http://msdn.microsoft.com/en-us/library/3yfs7yc7(v=vs.100).aspx
http://msdn.microsoft.com/en-us/library/gg703322%28v=vs.98%29.aspx
如何IIS檢查驗證用戶的文件夾ACL時.NET是明確表明的WindowsIdentity在遊戲中是身份應用程序池?
我目前唯一的理論是,文件授權模塊自動使用集成身份驗證,它明確檢查這個......但它似乎仍然違背了文件化的期望。
http://msdn.microsoft.com/en-us/library/gg703322%28v=vs.98%29.aspx
這篇文章,例如,似乎記錄都預期。
當Windows身份驗證已啓用,但模仿是禁用,ASP.NET執行使用從瀏覽器發送的證書文件授權模塊文件訪問檢查。模擬不需要啓用,因爲在執行請求之前,FileAuthorizationModule模塊確保請求用戶被允許讀取訪問權限或寫入資源訪問權限,具體取決於請求謂詞(例如,GET或POST)。
隨後的幾行後來被
不帶模擬的Windows身份驗證。這是默認設置。 ASP.NET通過使用應用程序的進程標識來執行操作並訪問資源,默認情況下,它是Windows 7和Windows 2008 R2上的應用程序池標識。有關更多信息,請參閱應用程序池標識。
帶有模擬的Windows身份驗證。通過這種方法,Web應用程序模擬身份驗證的用戶並使用該身份執行操作並訪問本地資源。當您將應用程序配置爲模擬時,已通過身份驗證的用戶的模擬令牌將附加到Web請求線程。因此,所有本地資源訪問均使用調用者的身份執行。
我的問題:
什麼身份被執行時,文件系統的ACL檢查應使用? (我的理解是當模擬=關閉時的應用程序池)以及哪些設置可能會影響在模擬之外使用哪個身份?
這非常類似於這樣的問題:
Does an IIS 7.5 web app with windows authentication require end users to have file permissions?
對這個問題的回答明顯沒有解決我的問題。不應要求授權'驗證用戶'組,因爲所使用的身份不應依賴於被授權的最終用戶集。我的問題更具體一點,哪個身份和這個如何控制?
Environment.UserName給你什麼用戶?這應該讓你的asp.net線程正在訪問的文件,這可能會發送你另一個路徑?這個問題聽起來真的很熟悉,但我不能,但我的手指。 –
我沒有特別檢查過,但WindowsIdentity.GetCurrent()正在返回應用程序池用戶,即使經過身份驗證的用戶正在由IIS在文件夾ACL中進行檢查。 –