2009-11-11 61 views
1

我有一個Web應用程序執行IIS 7規定(使用Microsoft.Web.Administration.dll)來創建我們的網站和FTP站點。當我使用管理員帳戶運行它時,它工作正常。Windows用戶帳戶,只執行IIS7條款

我想爲模擬創建一個Windows用戶帳戶,僅執行這些Web供應過程而不與服務器的管理員角色相同。

我該如何做到這一點?

+0

忘了說,我還建議使用Named Pipes進行Trusted Wrapper程序集和WCF/Remoting應用程序之間的任何通信。它通過沒有TCP/IP端口偵聽來減少攻擊面。我還會在服務應用程序中附加一些額外的認證,例如爲每個特權操作傳遞一個用戶名/密碼,並擁有某種自定義身份驗證機制,例如針對數據庫。 – Kev 2009-11-11 21:25:49

回答

2

您應該將應用程序分爲三個部分:

Windows服務

這將舉辦一個WCF或遠程處理的應用程序。你想把需要特權訪問你的系統的代碼放在這裏。例如創建和刪除網站。在有足夠權利使用Microsoft.Web.Administration執行操作的帳戶下運行此服務。

可信包裝或代理大會

這是安裝在GAC剛剛簽署的包裝程序集。它的作用是傳遞來自低信任Web應用程序的調用,以在上述服務中運行的代碼中執行特權操作。使用AllowPartiallyTrustedCallers屬性標記程序集(如果您的服務器配置爲部分信任),並標記需要使用[PermissionSet(SecurityAction.Assert, Unrestricted=true)]訪問遠程服務的任何類。

前端應用程序(或Web服務)

這是接口,您的應用程序(無論是使用GUI或Web服務的Web應用程序)。在其自己的應用程序池中運行該程序,只需執行足夠的權限,例如IUSR或類似的帳戶。理想情況下,你也應該在部分信任下運行。

您的Web應用程序/服務引用了GAC中的Trusted Wrapper程序集,該程序集依次引用了在Windows服務中運行的遠程處理或WCF應用程序。

使用這種分層的方法意味着你通過對只在你的Windows服務中運行的特定特權操作的訪問進行門控鎖定。

這種方法在Dominick Baier的'Developing More-Secure Microsoft ASP.NET 2.0 Applications'的附錄C中得到了很好的說明。我徹底推薦獲得一份副本。

+0

感謝您的Kev ...這解決了我的問題! – mallows98 2009-11-11 20:10:07